作为我的测试的一部分,我正在创建一个DAO,其唯一目的是在测试中。尝试运行单元测试时,我收到以下错误:
java.lang.IllegalArgumentException: Unknown entity:
似乎当实体驻留在src / test / java文件夹中时,它们不会被拾取。将实体移动到src / main / java时,一切正常。问题是这个DAO仅用于测试,我真的不想把它放在主要版本中。有办法解决这个问题吗?
答案 0 :(得分:0)
[如果您正在使用JPA]您需要为测试类创建一个单独的持久单元(我建议在测试资源中有一个单独的persistence.xml),并且需要在持久性中提及所有实际的ORM实体class
标记中的.xml。
例如,我遵循的策略,我创建了一个TestUtility,并且我使用CDI注入注入持久单元
private static final String PERSISTENCE_UNIT_NAME = "persistence-unit-test";
并构建我的entityManager:
public static EntityManager getEntityManager() {
if (entityManager == null) {
final EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
entityManager = factory.createEntityManager();
}
return entityManager;
}