Вопрос:

JUnit Test для Дао и Службы с Аркиллианом

unit-testing junit wildfly java-ee-7 jboss-arquillian

811 просмотра

2 ответа

14 Репутация автора

Привет! Я пытаюсь проверить свои уровни Service и Dao для приложения Java EE 7.

Поэтому я искал решения для тестирования, следуя инструкциям, используя Arquillian с тестом junit и удаленной зависимостью от wildfly.

Интерфейсы Dao и Service с относительными реализациями были созданы после моего теста junit с Arquillian:

@RunWith(Arquillian.class)
public class GenericServiceTest {

    @Inject
    private EmployeeService employeeService;

    @Deployment
    public static JavaArchive createDeployment() {
        return ShrinkWrap
                .create(JavaArchive.class)
                .addAsManifestResource("META-INF/persistence.xml",
                        "persistence.xml")
                .addClasses(EmployeeDao.class, EmployeeDaoImpl.class,
                        EmployeeService.class, EmployeeServiceImpl.class,
                        Employee.class)
                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");

    }

    @Test
    @Transactional
    public void should_crud() {
        // Gets all the objects
        assertNotNull(employeeService);
        Employee employee = employeeService.get(new Integer(1));
        assertNotNull(employee);
    }
}

Запуск класса как JUnit Test не работает с этой ошибкой:

Причина: java.lang.Exception: "WFLYCTL0216: ресурс управления '[(\" deploy \ "=> \" test.war \ ")]' not found"

Проход теста, если какие-либо классы были добавлены в ShrinkWrap следующим образом:

@RunWith(Arquillian.class)
public class GenericDaoTest {
@Inject
private EmployeeService employeeService;

    @Deployment
    public static JavaArchive createTestableDeployment() {
        final JavaArchive jar = ShrinkWrap.create(JavaArchive.class)
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
    return jar;
    }

    @Test
    public void should_crud() {
    }

}

Как я могу создать рабочий тест, используя arquillian для Java EE 7, добавив реализации классов обслуживания?

И я должен добавить каждый класс и интерфейсы, которые должны быть вызваны (например, все сущности, классы dao и т. Д.) Или только интерфейс службы и класс реализации?

большое спасибо

Автор: antonio Источник Размещён: 22.08.2016 08:29

Ответы (2)


0 плюса

111 Репутация автора

Поскольку вы разрабатываете javaee-приложение, я бы предложил вам создать архив War вместо Jar. Вы можете добавить весь пакет, используя

ShrinkWrap.addPackages(true, "com.yourpackage.name") так что вам не нужно добавлять свои классы самостоятельно.

Автор: fangdi Размещён: 25.10.2016 03:04

0 плюса

153 Репутация автора

Если я правильно понимаю вопрос, вы хотите проверить военный архив. Если это так, вы должны изменить

return ShrinkWrap
          .create(JavaArchive.class)

в

return ShrinkWrap
          .create(WarArchive.class)

Кроме того, вы должны добавить свой файл persistence.xml в папку META-INF, например:

.addAsResource("test-persistence.xml", "META-INF/persistence.xml")

Если вы хотите использовать аннотацию @Transactional в своих тестах, вам нужно добавить несколько зависимостей в область тестирования. Если вы еще не добавили их, вы можете прочитать по адресу http://arquillian.org/modules/transaction-extension/, какие зависимости добавить.

Автор: biro Размещён: 04.11.2016 07:45
Вопросы из категории :
32x32