2

@BeforeClassのように、テストスイート用に実行するセットアップがあります。

@RunWith(Categories.class)
@IncludeCategory(IntegrationTest.class)
.
.
.
public class IntegrationTestSuite {
    @BeforeClass
    public static void initialise() throws Exception {
        // Integration test-specific config.
    }
}

これは、スイート全体ですべてのテストを実行している場合にうまく機能します。ただし、個々のテストを実行すると、明らかにこのようなものは実行されません。テスト ケース レベルでテスト カテゴリの設定を再利用できる、より洗練された方法はありますか?

4

2 に答える 2

1

初期化を 1 回だけ実行するカスタム ルール (おそらくExternalResourseを使用) を作成することを検討してください。あるテストが他のテストの初期化を行うメカニズムを使用することは、アンチパターンです。テストが実行される順序に依存し、単一のテストのみが実行されると失敗するため、脆すぎます。@Ruleメカニズムははるかに優れたソリューションだと思います。

于 2012-10-08T11:09:03.003 に答える
0

グローバルフラグを静的コンテキストとして、またはプロパティファイルで次のように使用することをお勧めします。

public static boolean runTestCaseStandAlone = false;

また

boolean runTestCaseStandAlone = properties.get("run.test.case.alone");

テスト スイート メソッドを次のように更新しました。

public class IntegrationTestSuite {
 @BeforeClass
 public static void initialise() throws Exception {
   if(!GLOBALCONTEXT.runTestCaseStandAlone){
       // Integration test-specific config.
   }
  }
 }

テストケースの基本クラスを作成します。

public class BaseTest ....
 @BeforeClass
 public static void initialise() throws Exception {
   if(GLOBALCONTEXT.runTestCaseStandAlone){
       // Integration test-specific config.
   }
  }

個々のテスト ケースがすべて、上記の基本クラスを拡張していることを確認してください。

于 2012-10-08T01:58:45.627 に答える