2011-12-20 1 views
4

最近私のプロジェクトで単体テストを書くようになりましたが、すべてのアサートステートメントにメッセージ引数があることに気付きました。良いユニットテストメッセージを書くには

単体テストにはどのようなメリットがありますか?

ありがとうございます!

+0

「キャッシュ内のfooの値は3です」(ただし、_why_についてもっとよく分かっていれば3になると予想していましたが、それは答えの必要な部分です)。一般的に、あなたが保留をテストしているケースを示す肯定的なステートメントを作成します。 (また、http://stackoverflow.com/questions/1074928/should-the-junit-message-state-the-condition-of-success-or-failureも参照してください) –

答えて

1

国家試験下の事実。

は考えてみましょう:

$this->assertEquals($person->age, 21, "Age is 21") 

$this->assertEquals($person->age, 21, "Age of person born on 1990-12-20"); 

:対良いユニットテストのメッセージはバグがどこにあるかをすばやく推測に役立つはずです。悪いことは、より多くの時間を狩りに費やすことです。

+2

もちろん年齢は来年変更します;) – holygeek

+0

@ holigeekので、実際にはどちらが良いですか? '' ' $ this-> assertEquals($ person-> age、21、" Age is 21 ") ' '' このメッセージはassert文を繰り返すだけです。基本的には、値を付け加えない – tiengtinh

1

私は通常、それらを素早く短く保ちます。テストされているものだけです。メッセージは間違っていた可能性があるすべての物語を説明する必要はなく、読者を適切な初期の方向に向ける必要があります。テストは、そこからそれを理解できるほど明確でなければなりません。

一般的に、テストに精通していない人は少なくとも少しの文脈を持ち、テストをよく知っている人は、何が間違っているのかを知っているでしょう何かがうまくいかないテスト)。

上記の例では、「foo 'のキャッシュ」というメッセージが表示され、「foo」のキャッシュは3と予想されていましたが、67でした。このテストに精通している人にとっては、「期待された3」よりもはるかに役立つだろうが、テストabcの123行目では67だった。

(私は主にJava開発者よ、そう、これはJUnitのであるかのように、私が話して、私はPHPUnitのを想定してか、何でもそれは同じ方法についての作業と呼ばれています)

関連する問題