web-dev-qa-db-ja.com

jUnitの@Testごとに異なる分解

JUnitの@Testごとに異なるティアダウンを定義する方法はありますか?

20
Daniel

@Afterアノテーションを使用して、すべての@Testの後に実行されるメソッドを示します。

このような注釈の完全なスイートは次のとおりです。

  • @BeforeClass-すべての@Testsが実行される前
  • @Before-各@Testが実行される前
  • @After-各@Testが実行された後
  • @AfterClass-すべての@Testsが実行された後

私はその質問を理解していないかもしれないことに気づきました。特定のティアダウンメソッドを特定の@Testメソッドに関連付ける方法を尋ねている場合は、アノテーションは必要ありません。最後に、テストメソッドの最後で呼び出すだけです。

@Test
public void someTest() {
    try {
        // test something
    } finally {
        someParticularTearDown();
    }
}
36
Bohemian

テストメソッドを同じクラスにグループ化することのポイントは、同じセットアップと分解を行うことを含め、それらが物事を共有できるようにすることです。したがって、はい、テストごとに個別のティアダウンを定義できますが、@ Testメソッドを異なるクラスに配置することで定義できます。

別々のティアダウンメソッドを使い始めると、テストを同じクラスにグループ化する理由は明らかではありません。したがって、テストをクラスにグループ化する方法を柔軟に設定することで、この状況を管理できます。

6
Nathan Hughes

JUnitでこれを行う簡単な方法はありません。 TestNG を使用すると、メソッドをグループに入れることができるため、特定のグループでのみ実行される特定の@ BeforeMethod/@AfterMethodを定義できます。

1
Cedric Beust