Dependency injection 关于Arquillian远程测试的基本问题

Dependency injection 关于Arquillian远程测试的基本问题,dependency-injection,cdi,jboss-weld,jboss-arquillian,Dependency Injection,Cdi,Jboss Weld,Jboss Arquillian,我最近开始了解阿奎利安。在Geting started教程之后,我学习了“容器变体”,其中谈到了远程、嵌入式和托管容器。我对Arqillian如何处理这些不同的变体感到有点困惑 我的问题是:入门教程的第一个示例(包含TemparatureConverter)使用JBossAS6作为远程容器。我所了解的是,我的主应用程序归档(包含TemparatureConverter bean)将部署在JBoss AS 6中(在自己的VM中运行),我的测试类将在单独的VM中运行 我在TemparatureCon

我最近开始了解阿奎利安。在Geting started教程之后,我学习了“容器变体”,其中谈到了远程、嵌入式和托管容器。我对Arqillian如何处理这些不同的变体感到有点困惑

我的问题是:入门教程的第一个示例(包含TemparatureConverter)使用JBossAS6作为远程容器。我所了解的是,我的主应用程序归档(包含TemparatureConverter bean)将部署在JBoss AS 6中(在自己的VM中运行),我的测试类将在单独的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);
    }
现在,我启动了JBossAS,并通过命令行键入:
mvn test-Pjbossas-remote-6

我在想,我在Bean类中添加的日志消息将打印在JBoss控制台上,而我在测试类中添加的日志消息将打印在Maven控制台窗口上,因为这两个东西在单独的VM中运行

然而,这并没有发生,我看到所有日志消息都作为控制台打印在JBoss上

这意味着,我的测试用例与Bean类一起作为容器在JBoss中运行

如果这是真的,那么遥远在哪里?我的意思是,测试用例和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中


如果我的问题不清楚,请告诉我?

是的,Arquillian正在部署测试用例类以及在目标容器中测试的代码

引用文件:

Arquillian在运行时打包包覆面提取定义的存档,并将其部署到目标容器中。然后,它通过与服务器的远程通信协商测试方法的执行,并捕获测试结果

因此,就“远程性”而言,Arquillian提供的是一种“远程”启动测试并将结果呈现给开发人员的方法,就好像它是“本地”运行的一样。销售宣传是您不必关心部署,并且能够在自己的开发环境中运行测试

然后,远程容器和嵌入式容器的区别就变成了容器的运行方式。远程意味着您在运行测试之前,有一个容器与您的开发环境一起运行。embedded增加了在测试启动时只运行容器的值