9

请原谅我的无知;我还是单元测试领域的新手。

有人可以解释为什么..

$this->assertGreaterThan( 2, $result );

..比..好

$this->assertTrue( $result > 2 );

..(同样,所有其他特定的断言方法)?

谢谢!

4

3 回答 3

16

如果您向您的妈妈/爸爸/叔叔展示这些,那assertGreaterThan将更加直观。加上 isGreaterThan 的失败消息会好很多

"1 was not greater than 2"

或者

"false was not true"

哪一个更有表现力

于 2012-10-25T21:54:10.503 回答
3

实际上,最好的方法提供更好的可读性更好的失败消息:使用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
于 2012-10-26T07:18:36.113 回答
0

比……好

谁这么说的?两者都一样好。两种情况下的可读性都不同,但都不是特别好。您可以通过一些变量提取进一步改进它:

$minimumValue = 2;
$this->assertGreaterThan($minimumValue, $result);

$resultGreaterThanMinimumValue = $result > 2;
$this->assertTrue($resultGreaterThanMinimumValue);

这仍然不理想(因为这些断言不像英语中的句子那样读起来),但是这两种方法都不是更好。

于 2012-10-25T20:29:49.577 回答