请原谅我的无知;我还是单元测试领域的新手。
有人可以解释为什么..
$this->assertGreaterThan( 2, $result );
..比..好
$this->assertTrue( $result > 2 );
..(同样,所有其他特定的断言方法)?
谢谢!
请原谅我的无知;我还是单元测试领域的新手。
有人可以解释为什么..
$this->assertGreaterThan( 2, $result );
..比..好
$this->assertTrue( $result > 2 );
..(同样,所有其他特定的断言方法)?
谢谢!
如果您向您的妈妈/爸爸/叔叔展示这些,那assertGreaterThan
将更加直观。加上 isGreaterThan 的失败消息会好很多
"1 was not greater than 2"
或者
"false was not true"
哪一个更有表现力?
实际上,最好的方法提供更好的可读性和更好的失败消息:使用PHPUnit 基于函数的断言或Hamcrest 库。
assertThat(count($users), greaterThan(2));
>> Expected: greater than 2
>> but: was 1
或者
assertThat($users, arrayWithSize(greaterThan(2)));
>> Expected: array with size greater than 2
>> but: was array with size 1
assertThat
您始终可以通过将字符串作为断言方法或 Hamcrest函数的第一个参数或 PHPUnit 函数的第三个参数添加一个字符串来为任何断言提供可读的错误消息assertThat
:
self::assertTrue('At least one user found', !empty($users));
>> At least one user found
>> Expected: true
>> but: false
或者
assertThat('At least one user found', !empty($users), is(true));
>> At least one user found
>> Expected: true
>> but: false
比……好
谁这么说的?两者都一样好。两种情况下的可读性都不同,但都不是特别好。您可以通过一些变量提取进一步改进它:
$minimumValue = 2;
$this->assertGreaterThan($minimumValue, $result);
和
$resultGreaterThanMinimumValue = $result > 2;
$this->assertTrue($resultGreaterThanMinimumValue);
这仍然不理想(因为这些断言不像英语中的句子那样读起来),但是这两种方法都不是更好。