首页 文章

使用Arquillian对Dao和服务进行JUnit测试

提问于
浏览
0

嗨,我正在尝试为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 回答

  • 0

    由于您正在开发一个javaee应用程序,我建议您创建一个War存档而不是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/要添加的依赖项 .

相关问题