PHP单元测试利器 PHPUNIT深入用法(二)第2/2页
在上一篇文章中已经介绍过assertTrue和assertFalse了,这里留意一下其中的第二个参数,其含义是,当该断言的测试不通过时,自定义的显示信息。比如在这个测试方法中,当trueProperty不为真值时,将显示“trueProperty isn't true”的信息。
接下来再看下在数值方面上phpunit的断言使用实例:
public function testValueEquals()
{
$valueOne = 4;
$valueTwo = 2;
$this->assertEquals($this->_testable->addValues($valueOne,$valueTwo),6);
}
public function testValueGreaterThan()
{
$valueOne = 4;
$valueTwo = 2;
$this->assertGreaterThan($valueTwo,$valueOne);
}
public function testLessThanOrEqual()
{
$valueOne = 4;
$valueTwo = 2;
$this->assertLessThanOrEqual($valueTwo,$valueOne);
}
public function testAreObjectsEqual()
{
$testTwo = new Testable();
$this->_testable->resetMe = false;
$this->assertEquals($this->_testable,$testTwo);
}
?>
其中,assertEquals为判断是否相等,assertGreaterThan为判断是否大于,assertLessThanOrEqual判断是否小于或等于,而assertEquals这里要注意一下,它还可以用来判断两个对象是否相等,比如这里就判断了$testTwo这个Testable类的实例是否和新设置的resetMe这个对象相等。
除了在数值方面的断言外,在字符方面还有一些很多断言的功能,看下面的代码:
public function testStringEnding()
{
$testString = $this->_testable->getTestString();
$this->assertStringEndsWith('frood',$testString);
}
public function testStringStarts()
{
$testString = $this->_testable->getTestString();
$this->assertStringStartsWith('hoopy',$testString);
}
public function testEqualFileContents()
{
$this->assertStringEqualsFile('/path/to/textfile.txt','foo');
}
public function testDoesStringMatchFormat()
{
$testString = $this->_testable->getTestString();
$this->assertStringMatchesFormat('%s',$testString);
}
?>
其中, assertStringStartsWith断言是判断字符串是否以指定的字符串开头,assertStringEndsWith断言判断字符串是否以指定的字符串结尾。assertStringEqualsFile断言判断给定的文件中是否含有指定的字符,比如这里就判断textfile.txt这个文件中是否包含字符串foo。
而assertStringMatchesFormat可以让用户指定匹配的模式去判断一个字符串是否符合要求,如 $this->assertStringMatchesFormat('%s',$testString);
这里则判断$testString是否是字符串类型,具体的可以参考phpunit手册。
再来看如下的代码:
public function testStringIsNotNull()
{
$notANull = “i'm not a null!”;
$this->assertNull($notANull);
}
public function testStringIsSame()
{
$numberAsString = '1234';
$this->assertSame(1234,$numberAsString);
}
?>
其中assertNull判断某个变量是否为null,而assertSame则严格判断两个变量是否同一个类型,尽管在PHP中是弱类型语言,但这里通过assertSame还是能判断出$numberAsString为字符串类型,跟期望的1234数字类型不匹配,所以测试不能通过。
最后我们来看一下平常可能不大常用的断言,但又可能对你的单元测试工作十分有帮助的,先看代码如下:
public function testArrayKeyExists()
{
$this->assertArrayHasKey('first key',$this->_testable->testArray);
}
public function testAttributeExists()
{
$this->assertClassHasAttribute('resetMe',get_class($this->_testable));
}
public function testFileIsReal()
{
$this->assertFileExists('/path/to/file.txt');
}
public function testIsInstance()
{
$this->assertInstanceOf('OtherClass',$this->_testable);
}
<?php
public function testDoesMatchRegex()
{
$testString = $this->_testable->getTestString();
$this->assertRegExp('/[a-z]+/',$testString);
}
?>
代码中第一个断言assertArrayHasKey,是用来检查一个数组中是否每个键值都是存在的,比如我们的数组中,“firstkey”这个值是有键1与其对应的,所以测试能通过。而assertClassHasAttribute则能判断某个类是否有相应的属性,这个例子中测试也能通过;
而assertFileExists则判断在本地文件系统中是否存在指定的文件。而assertInstanceOf则判断某个你正在创建的对象是否为某个类的实例。assertRegExp相信大家都知道,这个是判断某个字符串中是否与给定的正则表达式相匹配。
总结
本文进一步探讨了PHPUNIT中一些重要的方法和断言,PHPUNIT中还有大量丰富的断言,对提高单元测试十分有帮助,具体的请参考PHPUNIT用户手册。
- Windows下安装PHP单元测试环境PHPUnit图文教程
- PHP单元测试利器 PHPUNIT深入用法(三)
- PHP单元测试利器 PHPUNIT初探
- PHP单元测试PHPUnit简单用法示例
- PHP单元测试框架PHPUnit用法详解
- 使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
- php单元测试phpunit入门实例教程
- PHP使用phpunit进行单元测试示例
- PHPUnit + Laravel单元测试常用技能
- Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
- laravel单元测试之phpUnit中old()函数报错解决
- PHPUnit 单元测试安装与使用入门教程
相关文章
php中getservbyport与getservbyname函数用法实例
这篇文章主要介绍了php中getservbyport与getservbyname函数用法,以实例形式分析了getservbyport与getservbyname函数获取server端的端口等信息的方法,需要的朋友可以参考下2014-11-11编译PHP报错configure error Cannot find libmysqlclient under usr的
这篇文章主要介绍了Linux上编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法,需要的朋友可以参考下2014-06-06
最新评论