単体テストケースのJavaドキュメントコメントの記述


11

私の意見では、単体テストケース自体がコードのドキュメントとして機能します。私の会社では、単体テストケースの上に詳細なjava docコメントを書いてほしいと思っています。そうする必要がありますか?そんなコメントはありますか?


テストコードがよく書かれていて読みやすいと仮定すると、テストコードでのこの種のコメントの主な価値は、意図の表明としてのものです。書かれたコードを判断することは、それがすることになっていることをしている、またはそれがテストすることになっているものをテストしている。次に、JAVADOCのようなシステムや単純なスクリプトを使用して、コードからテスト名とコメントをこすり取り、現在行っているテストとそれらのテストに関するドキュメントをすばやく作成できます。
チャックファンデルリンデン、

回答:


8

私がやっていることはJAVADOCコメントです:

  • どのクラスがユニットテストされているかを示すクラス(そのサブジェクトのベストプラクティスでは、テストケースの名前はクラスの名前+ "Test"または+ "TestCase"であることが推奨されているため、明らかであるはずです)。これは、{@ link XXXClass} JAVADOCコメントを使用して行われます

  • テストされるメソッドを示すメソッド({@link XXXClass#method1})。すべてのパスを適切にテストするために、クラスの1つのメソッドに対して複数のテストメソッドが必要になる場合があります。それが起こったら、私は内部でテストしているパスを示す追加の行を1つ書き込みます(ただし、1行の規則から逸脱することはありません)。

それを除いて、他のコメントはありません。他の場所で彼らの注意を引くには、Coberturaのようなものを使用して、かなりのコードカバレッジグラフィックを生成し、それらをそのように幸せにすることができます。

追加の注記:単体テストケースを参照しています。統合テストケースについて話している場合、何が起こっているのかを説明するために1行または2行追加する必要があります。


1

コードのドキュメント要件は、この質問に対する回答でかなり完全にカバーされています。上司は、コードについてナレーション付きの1行ずつの英語の説明を望んでいます。

そこに表示される答えの要約として、「状況によって異なります」。それが妥当である(そして奨励されている)場合と、それがあなたの時間の浪費である場合があります。


0

Javadocコメントは、個別の参照ドキュメントに抽出してフォーマットできますが、単体テストはできません。また、言葉で書くものは実際のコードとは異なる場合があり、通常は実際に予想される動作を言葉で説明していることに注意してください。バグを見つける方法の1つは、ドキュメントと実際のコードを比較することです。一致しない場合、それはバグです(どちらか、場合によっては両方)。

単体テストはテスト用であり、ドキュメントではありません。ドキュメントとして単体テストを使用するのは誤りであり、実行すべきではありません。


2
コードの文書化には、優れた単体テストスイートが非常に役立ちます。それらは、誰かのコードがどのように使用されるべきかについてのリファレンス実装と、そのように使用されたときにコードが正しく動作することの証明を提供します。
ビルミシェル2011

@Bill-議論はありませんが、役に立ちました。適切なドキュメントに置き換わるものではありません。
-littleadv

ドキュメントの対象者によって異なりますが、場合によっては間違いなく正しいです。
ビルミシェル2011

1
理想的には、単体テストだけがシステムのドキュメントではないはずですが、実際には、10のうち9つのプロジェクトがレガシーコードで動作しておりドキュメントがあって幸運であると考えられます。そして、この場合、実際のコードと完全に同期していない可能性のある一連のドキュメントよりも、ユニットテストを実行してパスする優れたセットを好む。(はい、Javadocでも可能です。)
PéterTörök'21 / 09/21

@PéterTörökええ...私はいくつかの異なる雇用者、いくつかの非常に有名な会社の間を移動しました。多くのレガシーコード。唯一の単体テスト- 私が書いたもの。あなたはとても幸運でした。あなたが見たものがどこでも起こると仮定しないでください。そして、あなたが一連の単体テストを持っているとしても...彼らが正しいと誰が言ったのですか?誰が彼らがすべきことをカバーすると言ったのですか?期待された結果は彼らが何であると誰が言ったのですか?ユニットテストが同期していないと想定するのはなぜですか?彼らが「合格」したからといって?ナンセンス。
littleadv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.