Я недавно начал изучать Arquillian. Следовал учебному пособию «Начало работы», узнал о «разновидностях контейнеров», в которых говорится о удаленных, встроенных и управляемых контейнерах. Я немного запутался в том, как Arqillian относится к этим различным разновидностям.
Мой вопрос: в первом примере учебника «Начало работы» (в котором есть TemparatureConverter) в качестве удаленного контейнера используется JBoss AS 6. Я понял, что мой основной архив приложений, содержащий bean-компонент TemparatureConverter, будет развернут в JBoss AS 6 (который работает на собственной виртуальной машине), а мой тестовый класс будет работать на отдельной виртуальной машине.
Я добавил несколько сообщений журнала в TemparatureConverter.java, т.е. класс бинов:
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, потому что эти две вещи выполняются в отдельной виртуальной машине. .
Однако этого не произошло, и я увидел, что все сообщения журнала распечатываются на консоли JBoss AS.
Это означает, что мои тестовые случаи выполняются внутри контейнера 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)
Но в этом случае кажется, что Аркиллиан помещает мои тестовые наборы вместе с классом Бина в ту же JVM.
Дайте мне знать, если мой вопрос неясен?