【发布时间】:2016-08-22 20:29:42
【问题描述】:
您好,我正在尝试为 Java EE 7 应用程序测试我的 Service 和 Dao 层。
所以我正在寻找测试解决方案,遵循使用带有 junit 测试和 Wildfly 远程依赖的 Arquillian 的教程。
在我对 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 测试运行它不适用于此错误:
原因:java.lang.Exception: "WFLYCTL0216: Management resource '[(\"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 for Java EE 7 添加服务类实现来创建工作测试?
我必须添加每个必须调用的类和接口(例如所有实体、dao 等类)还是只添加服务接口和实现类?
非常感谢
【问题讨论】:
-
服务器找不到部署
test.war,因为在创建此存档期间出现错误。因此,您需要做的第一件事是将 Java EE 容器的记录器级别从 INFO 提高到 DEBUG 以查看创建部署期间的完整错误。顺便说一句,创建 Java 归档 (JAR) 是否有特殊原因?我们通常将 Web 存档 (WAR) 部署到 Java EE 容器。 -
我在 Java EE7 petstore github 项目 github.com/agoncal/agoncal-application-petstore-ee7 中学习了一些教程和示例
标签: unit-testing junit wildfly java-ee-7 jboss-arquillian