9

私の無知を許してください。私はまだユニットテストの領域に慣れていません。

誰かが理由を説明できますか。

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

..よりも良い..

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

..(そして同様に、他のすべての特定のassertメソッド)?

ありがとう!

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関数の 3 番目のパラメーターとして文字列を追加することにより、いつでも読み取り可能なエラー メッセージを任意のアサーションに提供できます。

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);

これはまだ理想的ではありませんが (これらのアサートは英語の文のようには読めないため)、これら 2 つのアプローチはどちらも優れていません。

于 2012-10-25T20:29:49.577 に答える