1. ホーム
  2. java

[解決済み] JUnit4でテストメソッドを特定の順序で実行するには?

2022-03-23 17:22:35

質問

でアノテーションされたテストメソッドを実行したい。 @Test を特定の順序で実行します。

例えば

public class MyTest {
    @Test public void test1(){}
    @Test public void test2(){}
}

を確実に実行したい。 test1() 前に test2() を実行するたびに MyTest のようなアノテーションは見つかりませんでした。 @Test(order=xx) .

JUnitにとってかなり重要な機能だと思います。 オーダー機能 なぜ?

解決方法は?

<ブロッククオート

JUnitにとってかなり重要な機能だと思うのですが、JUnitの作者がオーダー機能を望んでいないとしたら、なぜですか?

私の知る限り、JUnitはすべてのテストが任意の順序で実行されることを前提としています。FAQから。

テスト・フィクスチャを使うにはどうしたらいいですか?

(...) テストメソッドの呼び出しの順番は 保証されない そのため、testOneItemCollection() が testEmptyCollection() の前に実行される可能性があります。(...)

なぜそうなのか?私は、テストは オーダー依存 は、作者が推進したくない行為です。テストは独立したものであるべきで、結合されるべきではないし、この 意志 メンテナンスが難しくなる、テストを個別に実行できなくなる(当たり前ですが)、などなど。

というのも、TestNGはネイティブに任意の順序でテストメソッドを実行することをサポートしているからです(そして、メソッドがメソッド群に依存することを指定するようなこともできます)。Cedric Beust がその方法を testngにおけるテスト実行の順序 .