2016-08-22 9 views
0

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

Так что я ищу тестовые решения, следуя учебным пособиям, используя Arquillian с junit test и дистанционной зависимостью дикой природы.

Dao и сервисные интерфейсы с относительными реализации были созданы, после моей 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: ресурс управления» [(\ "deployment \" => \ "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 etc) или только интерфейс службы и класс реализации?

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

+0

Развертывание 'test.war' не найдено сервером, потому что во время создания этого архива есть ошибки. Итак, первое, что вам нужно сделать, это увеличить уровень регистратора контейнера Java EE от _INFO_ до _DEBUG_, чтобы увидеть полную ошибку во время создания вашего развертывания. Кстати, есть ли особая причина создания Java-архива (JAR)? Обычно мы размещаем веб-архив (WAR) в контейнере Java EE. –

+0

Я следил за некоторыми учебными пособиями и примером в проекте Java EE7 petstore github https://github.com/agoncal/agoncal-application-petstore-ee7 – antonio

ответ

0

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

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

0

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

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/, какие зависимости добавить.