2010-12-04 12 views
3

これは、単体テストが行​​われるすべての言語に共通です。ユニットテストを構成するテストは、特定の順序で実行する必要がありますか?

ほとんどの単体テストライブラリは、単体テストの実行順序を制御する方法を提供します。 12個のテストを定義するTestClassがあるとしましょう。 12個のテストが実行される順序を制御しようとする正当な理由はありますか?ほとんどのライブラリはこれを行う方法を提供しているので、起動/終了コードはすでに処理されていることに注意してください。明示的なテスト順序を持つことには、テストを構成することができるため、それぞれのテストが直接テストするか、以前のテストで既にテストされた機能しか使用しないという利点があります。欠点は、注文を最新の状態に保ち、他の開発者が注文が何であるかを理解して、それを保存するためのメンテナンスコストです。

これは単なる努力の価値がありますか?

答えて

5

努力する価値はありません。もっと重要なことは、それは良い習慣ではありません。各単体テストは他の単体テストとは独立して実行する必要がありあなたのテストの1つが、最初に実行される別のテストに依存する場合、それは良いテストではありません。

別のテストでテストされた機能を使用する限り、これを達成するためにテストを「注文する」必要はありません。基本ロジックがあり、そのロジックのテストがあるとします(テストA)。新しいテストBで、より複雑なロジックをテストします。この新しいテストでは、基本ロジックが動作していることが前提となります。後で何かが基本ロジックに間違っていたら、テストAは失敗し、テストBも失敗します。それは結構です。テストAは問題を特定して修正します。

+0

+1 "ユニットテストは他から独立して実行する必要があります。" –

1

私が明示的なテスト順序を持つ利点は、テストを構成して、それぞれが直接テストするか、または既にテストされている機能のみを使用できることです。以前のテストによって。

ここではあまり効果がありません。また、依存関係はクラス間で頻繁に広がります。したがって、機能依存によるシーケンステストの実行は、複数のテストクラスに分散する可能性が高いため、単一のテストクラス内で実行することはできません。

関連する問題