Java Gradle-如何从不同的Gradle项目运行测试,并且仍然获得覆盖率数据
是否有人知道如何从不同的gradle项目运行测试,并且仍然可以获得emma coverage报告数据? 以下是我当前的布局:Java Gradle-如何从不同的Gradle项目运行测试,并且仍然获得覆盖率数据,java,gradle,Java,Gradle,是否有人知道如何从不同的gradle项目运行测试,并且仍然可以获得emma coverage报告数据? 以下是我当前的布局: Root/ settings.gradle (no explicit build.gradle - just defines all subprojects) SubProjectA/ build.gradle src/ (all real source is here) SubProjectATest/ build.gradle
Root/
settings.gradle (no explicit build.gradle - just defines all subprojects)
SubProjectA/
build.gradle
src/ (all real source is here)
SubProjectATest/
build.gradle
src/ (all testing code is here)
SubProjectB/ (similar structure as A)
SubProjectBTest/ (similar structure as ATest)
我目前正在使用emma插件,我想构建SubProjectA并从SubProjectA的build.gradle中运行SubprojectTest中的所有测试
下面是我在子项目的build.gradle中尝试过的一些东西
testCompile项目(':SubProjectATest').sourceset.test.classes
(),但我遇到一个错误“在项目上找不到属性“sourceset”
”testCompile项目(':subprojectast')
,但是我得到了“.SubProjectA/build/classes/test”,找不到“
”,还有“跳过任务”:SubProjectA:compileTestJava”,因为它没有源文件。
”我还尝试了下面的一个答案来使用test.dependsOn,测试确实在运行,但emma插件报告了以下内容:
build/classes/test',未找到
1。二,。只需将类添加到测试编译类路径。这对将要执行的测试没有任何影响
三,。是错误的方法,因为不应将源从项目X添加到项目Y
如果您想要的是gradle:SubProjectA:test
也执行:subprojectest:test
,则只需添加任务依赖项:
子项目a/build.gradle:
test.dependsOn(":subProjectATest:test")
顺便问一下,您将测试放在单独项目中的动机是什么?动机?好问题。我使用CodePro Analytix在一些基本DTO(仅getter和setter)上生成一些测试,这会自动将它们放入一个新的测试项目中。这对我来说很好,因为它是由代码生成的。这在Java中是非标准的吗?我无论如何都不是Java专家。我也是gradle和groovy的新手。不过,这在CMake项目中是相当标准的。“test.dependsOn”注意:添加test.dependsOn很好,因为测试确实执行,但是emma仍然找不到build/classes/test,因此没有报告代码覆盖率结果。谢谢你调查这件事!我会澄清一下我的问题。你是否将Emma插件应用于SubprojectTest项目?如果你从不直接与SubProjectTest交互(但总是通过SubProjectA),这表明它不应该是它自己的Gradle项目。您只需将生成的源添加到子项目的测试源集中(无论它们实际位于何处),或向子项目添加其他源集(例如“generatedTests”)和测试任务。谢谢!这对彼得很有帮助。我将把它作为一个源集保存!