単体テスト方法で要約が必要ですか
-
07-07-2019 - |
質問
単体テストメソッドの命名はその目的をより意味のあるものにするため、単体テストメソッドに概要を追加する必要がありますか?
例:
/// <summary>
/// Check the FormatException should be thrown when a give country data line contains a invalid number.
/// </summary>
[TestMethod]
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber()
{
...
}
解決
長い説明的な名前は、XMLコメントよりも重要だと思います。単体テストはAPIの一部ではないため、XMLコメントは不要です。
例:
[TestMethod]
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber()
{
...
}
は以下よりも便利です
///<summary>
/// Exception Should Thrown When Parse CountryLine Containing InvalidNumber
///</summary>
[TestMethod]
public void Test42()
{
...
}
XMLコメントは、APIとフレームワークの文書化に使用する必要があります。
他のヒント
実際には、サマリータグではなくDescriptionAttributeを使用することを好みます。理由は、Description属性の値が結果ファイルに表示されるためです。ログファイルを見ているだけで障害を理解しやすくなります
[TestMethod,Description("Ensure feature X doesn't regress Y")]
public void TestFeatureX42() {
..
}
個人的に、私はテストがドキュメントを読むのに十分なほど簡単になるようにしようとしています。テスト方法内でインラインコメントを使用して、何をしているのではなく、特定の方法で何をしているのかを説明します。
必要ではありませんが、XMLコメントが単体テストの名前を超えて値を追加すると感じた場合(包括的なように見えます)、他の開発者にサービスを提供することになります。
要約が本質的に単体テストメソッド名の直接の複製である場合、これは過剰だと思います。
上記の例では、ソースからドキュメントを抽出するツール(javadocまたは何かなど)を使用しない限り、必要ではないと言います。
一般的な経験則は、コードがあなたがしていることを示し、コメントが理由を示すことですが、名前は非常に冗長なので(誰も入力する必要がないので大丈夫だと思います)コメントが何かに貢献しているとは思わない。
要約がメソッド名にエンコードできる/すべき詳細情報を提供できる場合、要約を追加する必要があります。 「必要」と言うときは注意してください。ドキュメントを参照するときは、「プロジェクトを継承する新しいコーダーまたは5年後に自分に必要なコンテキスト/詳細/ニュアンスの100%を伝える必要がある」ことを意味します。
説明的なメソッド名がある場合、XMLコメントはまったく不要です。また、単体テストメソッドには必須です。
既に説明のあるテストメソッド名を使用して、正しい軌道に乗っています。 (多くのアジャイルおよびTDD実践者は、たとえばリンクテキストこのブログ投稿。
個人的には、次のようなメソッド名が好きです:
MyClass_OnInvalidInput_ShouldThrowFormatException()
しかし、それは単に私の個人的な好みです。
自分の時間を最大限に活用していると思うなら、それをしてください。しません。