assertequals() php,PHP单元测试利器:PHPUNIT深入用法(二)

在上一篇文章中已经介绍过assertTrue和assertFalse了,这里留意一下其中的第二个参数,其含义是,当该断言的测试不通过时,自定义的显示信息。比如在这个测试方法中,当trueProperty不为真值时,将显示“trueProperty isn't true”的信息。

接下来再看下在数值方面上phpunit的断言使用实例:

None.gif<?php

None.gifpublicfunctiontestValueEquals()

None.gif{

None.gif$valueOne=4;

None.gif$valueTwo=2;

None.gif$this->assertEquals($this->_testable->addValues($valueOne,$valueTwo),6);

None.gif}

None.gifpublicfunctiontestValueGreaterThan()

None.gif{

None.gif$valueOne=4;

None.gif$valueTwo=2;

None.gif$this->assertGreaterThan($valueTwo,$valueOne);

None.gif}

None.gifpublicfunctiontestLessThanOrEqual()

None.gif{

None.gif$valueOne=4;

None.gif$valueTwo=2;

None.gif$this->assertLessThanOrEqual($valueTwo,$valueOne);

None.gif}

None.gifpublicfunctiontestAreObjectsEqual()

None.gif{

None.gif$testTwo=newTestable();

None.gif$this->_testable->resetMe=false;

None.gif$this->assertEquals($this->_testable,$testTwo);

None.gif}

None.gif?>

其中,assertEquals为判断是否相等,assertGreaterThan为判断是否大于,assertLessThanOrEqual判断是否小于或等于,而assertEquals这里要注意一下,它还可以用来判断两个对象是否相等,比如这里就判断了$testTwo这个Testable类的实例是否和新设置的resetMe这个对象相等。

除了在数值方面的断言外,在字符方面还有一些很多断言的功能,看下面的代码:

None.gif<?php

None.gifpublicfunctiontestStringEnding()

None.gif{

None.gif$testString=$this->_testable->getTestString();

None.gif$this->assertStringEndsWith('frood',$testString);

None.gif}

None.gifpublicfunctiontestStringStarts()

None.gif{

None.gif$testString=$this->_testable->getTestString();

None.gif$this->assertStringStartsWith('hoopy',$testString);

None.gif}

None.gifpublicfunctiontestEqualFileContents()

None.gif{

None.gif$this->assertStringEqualsFile('/path/to/textfile.txt','foo');

None.gif}

None.gifpublicfunctiontestDoesStringMatchFormat()

None.gif{

None.gif$testString=$this->_testable->getTestString();

None.gif$this->assertStringMatchesFormat('%s',$testString);

None.gif}

None.gif?>

其中, assertStringStartsWith断言是判断字符串是否以指定的字符串开头,assertStringEndsWith断言判断字符串是否以指定的字符串结尾。assertStringEqualsFile断言判断给定的文件中是否含有指定的字符,比如这里就判断textfile.txt这个文件中是否包含字符串foo。

而assertStringMatchesFormat可以让用户指定匹配的模式去判断一个字符串是否符合要求,如 $this->assertStringMatchesFormat('%s',$testString);

这里则判断$testString是否是字符串类型,具体的可以参考phpunit手册。

再来看如下的代码:

None.gif<?php

None.gifpublicfunctiontestStringIsNotNull()

None.gif{

None.gif$notANull=“i'm not a null!”;

None.gif  $this->assertNull($notANull);

None.gif}

None.gifpublic function testStringIsSame()

None.gif{

None.gif  $numberAsString ='1234';

None.gif  $this->assertSame(1234,$numberAsString);

None.gif}

None.gif?>

其中assertNull判断某个变量是否为null,而assertSame则严格判断两个变量是否同一个类型,尽管在PHP中是弱类型语言,但这里通过assertSame还是能判断出$numberAsString为字符串类型,跟期望的1234数字类型不匹配,所以测试不能通过。

最后我们来看一下平常可能不大常用的断言,但又可能对你的单元测试工作十分有帮助的,先看代码如下:

None.gif<?php

None.gifpublicfunctiontestArrayKeyExists()

None.gif{

None.gif$this->assertArrayHasKey('first key',$this->_testable->testArray);

None.gif}

None.gifpublicfunctiontestAttributeExists()

None.gif{

None.gif$this->assertClassHasAttribute('resetMe',get_class($this->_testable));

None.gif}

None.gifpublicfunctiontestFileIsReal()

None.gif{

None.gif$this->assertFileExists('/path/to/file.txt');

None.gif}

None.gifpublicfunctiontestIsInstance()

None.gif{

None.gif$this->assertInstanceOf('OtherClass',$this->_testable);

None.gif}

None.gif<?php

None.gifpublicfunctiontestDoesMatchRegex()

None.gif{

None.gif$testString=$this->_testable->getTestString();

None.gif$this->assertRegExp('/[a-z]+/',$testString);

None.gif}

None.gif?>

代码中第一个断言assertArrayHasKey,是用来检查一个数组中是否每个键值都是存在的,比如我们的数组中,“firstkey”这个值是有键1与其对应的,所以测试能通过。而assertClassHasAttribute则能判断某个类是否有相应的属性,这个例子中测试也能通过;

而assertFileExists则判断在本地文件系统中是否存在指定的文件。而assertInstanceOf则判断某个你正在创建的对象是否为某个类的实例。assertRegExp相信大家都知道,这个是判断某个字符串中是否与给定的正则表达式相匹配。

总结

本文进一步探讨了PHPUNIT中一些重要的方法和断言,PHPUNIT中还有大量丰富的断言,对提高单元测试十分有帮助,具体的请参考PHPUNIT用户手册。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值