当前位置: 首页 > 知识库问答 >
问题:

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

司寇灵均
2023-03-14

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

但是,我不认为这适用于测试代码。

我在src/test/Java中有一个Java“示例”测试使用位于src/test/groovy中的类。

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

SwingJavaFXSampleAppTestInJava.java:23: error: cannot find symbol
SwingJavaFXSampleAppTest swingJavaFx = new SwingJavaFXSampleAppTest();

请注意,SwingJavaFXSampleAppTest是一个尚未编译的Groovy类(在Gradle输出中,我可以看到它在尝试compileTestJava之前没有运行compileTestGroovy,因为前者依赖于后者)。

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

为什么它不能在Gradle中工作,当它声称支持任何顺序的编译,我怎么能让它工作?

共有2个答案

呼延臻
2023-03-14

您应该能够将java测试移动到src/test/groovy

古文康
2023-03-14

正如Gradle用户指南中所解释的,只有传递给GroovyCompile任务的代码才是联合编译的。因此,要么将Java和Groovy代码放入src/main/Groovy,要么重新配置源代码集:

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

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

 类似资料:
  • 我确实看到了一些关于在SonarQube中安装Groovy插件的相关答案,但是没有提到这是用于哪一个版本的SonarQube的解决方案(我不再看到这个插件可用)

  • 根据前面的问题,我创建了一个静态编程语言Gradle项目。我向其中添加了两个源文件: 我还将目录src标记为源根,将测试标记为测试源根。 如果我在别处创建与这些源文件完全相同的目录结构,并围绕它创建一个非渐变IntelliJ项目,我就能够编译和运行这些代码,包括测试。 然而,在我的Gradle版本的项目中,我无法从IntelliJ IDEA构建测试。我发现以下错误: 奇怪的是,如果我在构建包装器后

  • 问题内容: 我们刚刚开始在我们的项目上使用Gradle和TestNG,所以我正在检查是否有任何测试失败实际上会使构建失败。我很惊讶地发现事实并非如此。正确地拾取并编译了测试,因此我看到了类文件。我也得到了运行的报告,但是显示0个测试(预期2个)。跑步给我以下内容: SuperSimpleTest.java: build.gradle包含: 我已经看过有关此主题的其他问题,并且找到了用作解决方法的提

  • 我们刚刚开始在我们的项目中使用Gradle和TestNG,所以我正在检查失败的任何测试是否真的失败了构建。我很惊讶地看到它没有。测试被正确地拾取和编译,所以我看到了类文件。我也收到了运行报告,但它说0个测试(预计为2个)。运行给我以下信息: SuperSimpleTest.java: 生成.gradle 包含: 我已经看了一下有关此主题的其他问题,在那里我发现了使用作为解决方法的提示(请参阅 ht