1

私は非常に具体的なテストケースを持っています:

  1. JARをデプロイする必要があります
  2. いくつかのテストを行います
  3. 別の JAR をデプロイする
  4. さらにテストを行う

JAR はこの特定の順序で展開する必要があります (テスト メソッドの呼び出し前に両方を展開することはできません)。

JUnitのような環境でそのようなシナリオを実行する方法を知っていますか? 1. Arquillian で確実に実行できることはわかっていますが、テスト メソッド内で別の展開を実行する可能性があるかどうかはわかりません。

4

2 に答える 2

3

これは、TestMethod 内から Deployer API を使用して Arquillian で行うことができます。

まず、@Deployment が Arquillian によって管理されないように定義する必要があります。

@Deployment(name = "X", managed = false)
public static WebArchive manualDeployment() {
    return ShrinkWrap.create(WebArchive.class)....
}

次のステップは、Deployer を注入することです。

@ArquillianResource
private Deployer deployer;

次に、 @Test メソッド内から次を呼び出すことができます。

@Test
public void shouldBeAbleToDeploy() {
    deployer.deploy("X")
}

デプロイ X がコンテナー内テスト用にセットアップされている場合 (@Deployment.testable=true (デフォルトの動作))、デプロイしたばかりのデプロイ内で次の @Test メソッドを実行できます。

@Test
public void shouldBeAbleToDeploy() {
    deployer.deploy("X");
}

@Test @OperateOnDeployment("X")
public void shouldNowBeInDeploymentX() {
    // we're now inside X
}

デフォルトでは、JUnit TestMethods はランダムな順序で実行されますが、Arquillian JUnit 統合は、実行順序を強制するために使用できる @InSequence(n) アノテーションを提供します。

@Test @InSequence(1)
public void shouldBeAbleToDeploy() {
    deployer.deploy("X");
}

@Test @InSequence(2) @OperateOnDeployment("X")
public void shouldNowBeInDeploymentX() {
    // we're now inside X
}
于 2011-12-09T16:52:53.737 に答える
0

テスト メソッドが実行されるだけです。また、そこからデプロイできる必要があります。私はあなたがすでにセットアップ段階のテストを通してものをセットアップしているなら、それがテストから動作するかどうかは簡単です

于 2011-11-29T12:29:24.587 に答える