2016-04-07 11 views
0

プロジェクトでユニットテストにJunitを使用しています。私はすべてのテストクラスを含むパッケージを実行するとき、またはそれらがmavenインストールを実行しているときに実行されているときに、junitテストクラスの実行を注文するか、それらのうちの1つを最後に実行する必要があります。ご協力ありがとうございました。テストパッケージを実行しているときにJunitテストクラスを最後に実行する方法

+2

http://stackoverflow.com/questions/3693626/how-to-run-test-methods-in-specific-order-in-junit4 –

+5

これはちょっと怪しいですね。お互いに依存する単体テストを書くべきではありません。別々に実行できる別個のテストでなければなりません。その場合、実行する順序は重要ではありません。テストに前提条件がある場合は、setupメソッドを使用します。 –

+0

@BenThurleyが上記のことに加えて、最後に特定のテストを実行する理由と理由を説明し、その問題を解決するために役立つかもしれません。 – tddmonkey

答えて

1

ユニットテストはUnitである必要があります。あなたがお互いに依存しているユニットテストのいくつかの並べ替えをしようとしている場合、それは悪い考えです。

テストコードまたはクリーンアップコードの設定をそれぞれ設定するには、@BeforeClassまたは@AfterClass注釈を使用できますが、

1

設計上、JUnitはテストメソッド呼び出しの実行順序を指定しません。これまでは、リフレクションAPIによって返された順序でメソッドが呼び出されていました。しかし、Javaプラットフォームでは特定の順序が指定されておらず、JDK 7では多かれ少なかれランダムな順序が返されるため、JVMの順序は賢明ではありません。もちろん、よく書かれたテストコードは順序を仮定しませんが、いくつかはあります。予測可能な障害は、特定のプラットフォームでのランダムな障害よりも優れています。

JUnit 4.11は、デフォルトでは確定的ではありませんが、予測不可能な順序(MethodSorter.DEFAULT)を使用します。

  1. @FixMethodOrder(MethodSorters.JVM):JVMで返される順序でテストメソッドを葉だけで利用できるMethodSortersの1を@FixMethodOrderを使用して、テストクラスに注釈を付けると、指定したテストの実行順序を変更するには。この順序は、実行ごとに異なる場合があります。

  2. @FixMethodOrder(MethodSorter.NAME_ASCENDING):テストメソッドをメソッド名で、辞書順にソートします。

0

JUnitには、実行順序がどのような方法でもすべてのクラスを一覧表示/並べ替えることができるテストスイートを作成する機能があります。しかし、@BenThurley、@Muhammad、@tddmonkeyが提供するコメントには、JUnitのテストクラスは互いに独立していなければならないと私は同意します。あなたが別のクラスのあるクラスで修正されているデータを使用している場合は、mockingを使うことをお勧めします。

+0

私はあなたに言及しませんでした。それをするのは良い考えではないと言った。それは問題になる可能性が高い –

関連する問題