使用webcontext的Gradle测试任务无法使用实体

时间:2014-04-22 13:04:09

标签: java eclipse hibernate gradle testng

我遇到了一些应该运行测试的gradle任务的问题。由于这是ant任务的一些遗产,我们不希望将它们包含在我们的测试套件中。特别是考虑到那些蚂蚁是在testng中,而那些由我们制作并定期使用的是使用spock和junit制作的。

问题是那些测试正在使用一些上下文,当我在eclipse IDE下运行这些测试时,它运行得很好,但是如果我尝试做的话它会失败:

task testNgTesting(type: Test, dependsOn: testClasses){
    useTestNG()
    includes = ["**/*IT*"]
}

但是当我尝试使用该任务时,我得到的错误如“org.hibernate.MappingException:Unknown entity:”或“java.lang.IllegalArgumentException:没有为该名称定义查询”

1 个答案:

答案 0 :(得分:0)

实际上问题更深了。 Gradle试图变得聪明,并且从它定义的任何文件夹中将类文件放入类文件夹,将所有其他文件放入资源。当加载persistence.xml时,它会扫描带有注释的实体,这些实体以classpath root开头,用于它所在的文件夹(即build / resources / main)。由于所有这些类都在build / classes / main中,因此无法找到它们。我所做的解决方法是引入两个复制任务。一个命名是将persistence.xml复制到classes文件夹中,另一个是在测试完成后将此文件移回资源。你可能想要使用类似的东西 testNgTesting.finalizedBy(cleanAfterIntegrationTests),以确保即使有一些测试失败也会进行清理。