10

TestNGを使用して、グラスフィッシュ3.1.2.2が組み込まれたArquillianを使用して統合テストを作成しています。これらのテストを並行して実行できるようにしたいのですが、この場合、glassfish ポートとデータベース名を動的に構成する必要があります (このセットアップは既にあり、arquillian テストで再利用したいと考えています)。私が欠けているのは、データベースを準備し、フリーポートを検索し、グラスフィッシュ構成 (domain.xml、glassfish-resources.xml の場合もあります) を更新できる「コンテナ開始前」フックです。これに対する「クリーンな」解決策はありますか、それとも私のユースケースは Arquillian 開発者によって予見されていませんでしたか?

私が現在解決したハックな方法は、arquillian の beforeSuite メソッドをオーバーライドすることですが、これはテストの起動時とコンテナー内で 2 回呼び出されます (したがって、私の哀れな静的フラグ)。次に、arquillian の before スイートをインターセプトする方法がないため、このソリューションは JUnit ベースのテストでは機能しません。

public class FullContainerIT extends Arquillian {

    private static boolean dbInitialized;

    //@RunAsClient <-supported by @Test only
    @Override
    @BeforeSuite(groups = "arquillian", inheritGroups = true)
    public void arquillianBeforeSuite() throws Exception {
        if (dbInitialized == false) {
            initializeDb();
            dbInitialized = true;
        }
        super.arquillianBeforeSuite();
    }
}

私が
持っていたいくつかのアイデア: + Arquillian JavaDocsでイベント を見たことがありますが、Arquillian イベントをリッスンする方法がわかりません。+ ShrinkWrap Descriptorを作成する 可能性があることを確認しましたが、これらは Glassfish リソースをサポートしていません。@BeforeSuite @RunAsClient@RunAsClient@Test
org.jboss.arquillian.container.spi.event.container.BeforeStart
@Deployment

4

1 に答える 1