嗨,我正在尝试为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:管理资源'[(\”deployment \“=> \”test.war \“)]'找不到”
如果已将任何类添加到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等类)或仅添加服务接口和实现类?
非常感谢
2 回答
由于您正在开发一个javaee应用程序,我建议您创建一个War存档而不是Jar . 您可以使用添加整个包
ShrinkWrap.addPackages(true, "com.yourpackage.name")
所以你不必独立添加你的类 .如果我正确理解了这个问题,你想测试一个战争档案 . 如果是这种情况,你应该改变
至
此外,您应该将persistence.xml文件添加到META-INF文件夹,如:
如果要在测试中使用注释@Transactional,则需要向测试范围添加一些依赖项 . 如果你还没有添加它们,你可以阅读http://arquillian.org/modules/transaction-extension/要添加的依赖项 .