我最近开始了解 Arquillian。正在关注入门教程,了解了有关远程、嵌入式和托管容器的“容器品种”。我对 Arqillian 如何对待这些不同品种感到有些困惑。
我的问题是:入门教程第一个示例(具有 TemparatureConverter)使用 JBoss AS 6 作为远程容器。我的理解是,包含 TemparatureConverter bean 的主要应用程序存档将部署在 JBoss AS 6(在其自己的 VM 中运行)中,而我的 Test 类将在单独的 VM 中运行。
我在 TemparatureConverter.java 即 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
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 控制台窗口上,因为这两件事在单独的 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 似乎将我的测试用例与 Bean 类放在同一个 JVM 中。
如果我的问题不清楚,请告诉我?