Я работаю с Arquillian с управляемым контейнером JBoss 7. Я пишу тест, чтобы сделать следующее:Arquillian: объединение локального и контейнерного кода
- Подготовьте тест локально, а не на сервере JBoss.
- Запустите тест на сервере JBoss.
- Подтвердите вывод, а не на сервере JBoss.
Вот моя первая попытка в этом:
@RunWith(Arquillian.class)
public class NotWorking {
@Inject
private Service service;
@Deployment
public static Archive<?> createDeployment() {
// ...
}
@Test
public void testService() throws Exception {
prepare();
service.executeService();
validate();
}
@RunAsClient
public void prepare() throws Exception {
LocalOnlyClass.prepare();
}
@RunAsClient
public void validate() throws Exception {
LocalOnlyClass.validate();
}
}
К сожалению, это не работает. Аркиллиан пытается запустить подготовку и проверку на сервере и не находит LocalOnlyClass. Я могу получить эту работу следующим образом, но его уродливым:
@RunWith(Arquillian.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class Working {
@Inject
private Service service;
@Deployment
public static Archive<?> createDeployment() {
// ...
}
@Test
@RunAsClient
public void testService1Prepare() throws Exception {
LocalOnlyClass.prepare();
}
@Test
public void testService2Test() throws Exception {
service.executeService();
}
@Test
@RunAsClient
public void testService3Validate() throws Exception {
LocalOnlyClass.validate();
}
}
Кто-нибудь знает лучший способ сделать это, что позволяет избежать «поддельные» тесты?
Спасибо за ваш комментарий. Вы совершенно правы, говоря, что '@ FixMethodOrder' сам по себе не исправляет проблему. Какие исправления он ставит '@ RunAsClient'around метод' @ Test', а не метод без тестирования. Затем '@ FixMethodOrder' вместе с именованием тестов используется, чтобы убедиться, что все работает в правильном порядке. – Adam