JUnit4 で特定の順序でテストメソッドを実行するにはどうすればよいでしょうか? 質問する

JUnit4 で特定の順序でテストメソッドを実行するにはどうすればよいでしょうか? 質問する

@Test特定の順序で注釈が付けられたテストメソッドを実行したいと思います。

例えば:

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

を実行するたびに、test1()の前にが実行されるようにしたいのですが、 のような注釈が見つかりませんでした。test2()MyTest@Test(order=xx)

これは JUnit にとって非常に重要な機能だと思いますが、JUnit の作者が順序付け機能を望んでいないのであれば、それはなぜでしょうか?

ベストアンサー1

これは JUnit にとって非常に重要な機能だと思いますが、JUnit の作者が順序付け機能を望んでいないのであれば、それはなぜでしょうか?

JUnit でこれを行うためのクリーンな方法があるかどうかはわかりませんが、私の知る限り、JUnit ではすべてのテストを任意の順序で実行できることが前提となっています。FAQ より:

テストフィクスチャはどのように使用すればよいですか?

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

なぜそうなるのでしょうか? そうですね、テストを順序依存にすることは、著者が推奨したくない習慣だと思います。テストは独立している必要があり、結合されるべきではありません。これに違反すると、保守が難しくなり、テストを個別に実行する機能が損なわれます (当然のことですが)。

そうは言っても、本当にこの方向に進みたいのであれば、TestNGの使用を検討してください。TestNGは、テストメソッドを任意の順序でネイティブに実行することをサポートしています(メソッドがメソッドのグループに依存することを指定するなど)。Cedric Beustは、これを行う方法を説明しています。testng でのテストの実行順序

おすすめ記事