如何让Gradle在Java测试之前编译Groovy测试

如何让Gradle在Java测试之前编译Groovy测试,java,groovy,gradle,Java,Groovy,Gradle,Gradle的Groovy插件声称它支持联合编译,它允许自由地混合和匹配Groovy和Java代码,在两个方向上都有依赖关系“ 然而,我认为这不适用于测试代码 我在src/test/Java…中有一个Java“sample”测试,它使用了一个位于src/test/groovy中的类 尝试使用Gradle构建时,我会遇到如下错误: SwingJavaFXSampleAppTestInJava.java:23: error: cannot find symbol SwingJavaFXSampleA

Gradle的Groovy插件声称它支持联合编译,它允许自由地混合和匹配Groovy和Java代码,在两个方向上都有依赖关系“

然而,我认为这不适用于测试代码

我在
src/test/Java…
中有一个Java“sample”测试,它使用了一个位于
src/test/groovy
中的类

尝试使用Gradle构建时,我会遇到如下错误:

SwingJavaFXSampleAppTestInJava.java:23: error: cannot find symbol
SwingJavaFXSampleAppTest swingJavaFx = new SwingJavaFXSampleAppTest();
请注意,
SwingJavaFXSampleAppTest
是一个尚未编译的Groovy类(在Gradle输出中,我可以看到它在尝试
compileTestJava
之前没有运行
compileTestGroovy
,因为前者依赖于后者)

我能够使用groovy eclipse插件与Maven构建相同的项目


当Gradle声称支持以任何顺序编译时,为什么它不能在Gradle中工作?我如何才能使它工作?

您应该能够将java测试移动到
src/test/groovy
中,正如中所述,只有传递给
GroovyCompile
任务的代码是联合编译的。因此,要么将Java和Groovy代码放入
src/main/Groovy
,要么重新配置源代码集:

sourceSets.main.java.srcDirs = []
sourceSets.main.groovy.srcDirs = ["src/main/java", "src/main/groovy"]

对于测试,将所有出现的
main
替换为
test

您的意思是
src/test/groovy
而不是
src/groovy/java
使用上述测试指令实际上导致了很多测试开始失败,但它确实解决了编译问题。什么样的副作用会导致我所有使用继承的测试(一些测试对许多类来说都是通用的)与
groovy.lang.MissingMethodException
??信息如此之少,不可能回答这个问题。