您好我正在尝试为Java EE 7应用程序测试我的Service和Dao层。
所以我在寻找测试解决方案,使用Arquillian进行junit测试和wildfly远程依赖的教程。
在使用Arquillian进行junit测试之后,已经创建了具有相关实现的Dao和Service接口:@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:管理资源' [(\"部署\" => \" test.war \& #34;)]'找不到"
如果已将任何类添加到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等类)或仅添加服务接口和实现类?
非常感谢
答案 0 :(得分:0)
由于您正在开发一个javaee应用程序,我建议您创建一个War存档而不是Jar。 您可以使用
添加整个包 ShrinkWrap.addPackages(true, "com.yourpackage.name")
因此您无需单独添加课程。
答案 1 :(得分: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/处阅读要添加的依赖项。