最近、Arquillian について学び始めました。入門チュートリアルに従って、リモート、組み込み、およびマネージド コンテナーについて説明する「コンテナーの種類」について学びました。Arqillian がこれらのさまざまな種類をどのように扱うかについて少し混乱しています。
私の質問は: 入門チュートリアルの最初の例 (TemparatureConverter を含む) では、JBoss AS 6 をリモート コンテナとして使用しています。私が理解したのは、TemparatureConverter Bean を含むメイン アプリケーション アーカイブが JBoss AS 6 (独自の VM で実行されている) にデプロイされ、Test クラスが別の VM で実行されるということです。
TemparatureConverter.java ie Bean クラスにいくつかのログ メッセージを追加しました。
public double convertToCelsius(double f) {
System.out.println("@@@@@@@@@@Inside container: convertToCelsius");
return ((f - 32) * 5 / 9);
}
public double convertToFarenheit(double c) {
System.out.println("@@@@@@@@@@Inside container: convertToFarenheit");
return ((c * 9 / 5) + 32);
}
また、いくつかのログ メッセージを Test クラスに追加しました。
@Test
public void testConvertToCelsius() {
System.out.println("@@@@@@@@@Inside Junit client");
Assert.assertEquals(converter.convertToCelsius(32d), 0d);
Assert.assertEquals(converter.convertToCelsius(212d), 100d);
}
JBoss AS を起動し、コマンド ラインから次のように入力してテスト ケースを実行します。mvn test -Pjbossas-remote-6
Bean クラスに追加したログ メッセージは JBoss コンソールに出力され、Test クラスに追加したログ メッセージは Maven コンソール ウィンドウに出力されると考えていました。これら 2 つのことは別の VM で実行されているためです。
しかし、それは起こらず、すべてのログ メッセージが JBoss AS コンソールに出力されていることがわかりました。
つまり、私のテスト ケースは Bean クラスと共に JBoss AS コンテナ内で実行されています。
もしこれが本当なら、遠隔性はどこにあるのでしょうか? つまり、テスト ケースと Bean の両方が同じ JVM 内で実行されています。これは「埋め込みコンテナー」の動作に似ていますね。
私はこの説明を参照しています:
a remote container resides in a separate JVM from the test runner; Arquillian binds to the container to deploy and undeploy the test archive and invokes tests via a remote protocol (typically HTTP)
しかし、この場合、Arquillian は同じ JVM に Bean クラスとともにテスト ケースを配置しているようです。
私の質問が明確でない場合はお知らせください。