我有一個成熟的使用Hibernate/JPA的java應用程序,它工作得很好。我們正在嘗試添加一些單元/集成測試。我使用Spring的TestContext框架這樣做,我的測試類是這樣的:JPA實體在單元測試期間未被掃描
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class ServiceTest {
@Autowired
private MyService myService;
@Test
public void testWorkspaceThing() throws Exception {
List<MyEntity> entities = myService.someMethod();
assertNotNull(entities);
}
}
我複製/從應用程序上下文到ServiceTest-context.xml中粘貼所有必要的上下文配置。這包括上下文:組件掃描,定義dataSource,entityManagerFactory bean等。當應用程序運行時,我沒有錯誤。運行此測試時,我得到:
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: MyEntity is not mapped.
對於我嘗試查詢的任何和所有實體類。實體類用javax.persistence.Entity等註釋。
有誰知道爲什麼使用TestContext會失敗嗎?
更新
我們persistence.xml文件基本上是空的:
<persistence-unit name="some-pu" />
所以,我以爲這是自動掃描,以查找所有註釋的實體類。在運行單元測試時,在tomcat中部署的方式與文件夾結構之間的目錄結構有何不同?我們的persistence.xml是的WebContent/WEB-INF /班/ META-INF
而且 - 我注意到你可以定義 「packagesToScan」 使用Spring 3.1,但我們在使用Spring 3.0.6.RELEASE
看到我上面的更新,persistence.xml是相當裸露的。在tomcat中部署,這工作得很好。 – NTyler
不幸的是,我們正在使用3.0.6。我想知道是否有任何方法可以解決這個問題,而無需升級。 – NTyler