Фундаментальный вопрос об Arquillian для удаленного тестирования - PullRequest
0 голосов
/ 16 июня 2011

Я недавно начал изучать 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.

Дайте мне знать, если мой вопрос неясен?

1 Ответ

2 голосов
/ 06 июля 2011

Да, Arquillian развертывает ваши тестовые классы вместе с кодом, который тестируется в вашем целевом контейнере.

Чтобы процитировать документы:

Arquillian упаковывает ShrinkWrap-определяет архив во время выполнения и развертывает его в целевой контейнер.Затем согласовывает выполнение методов тестирования и фиксирует результаты теста, используя удаленную связь с сервером.

Таким образом, с точки зрения "удаленности", Arquillian предоставляет способзапустить тест «удаленно» и представить результат разработчику, как если бы он был запущен «локально».Суть продаж заключается в том, что вам не нужно заботиться о развертывании, и вы можете запускать тестирование в своей собственной среде разработки.

Разница в удаленных и встроенных контейнерах становится способом запуска контейнера.Удаленный означает, что у вас есть контейнер, работающий вместе со средой разработки до запуска теста.И внедренный добавляет значение того, что контейнер запущен только при запуске теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...