Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将带有静态方法的Groovy特性应用于Junit测试类?_Java_Maven_Groovy_Junit - Fatal编程技术网

Java 如何将带有静态方法的Groovy特性应用于Junit测试类?

Java 如何将带有静态方法的Groovy特性应用于Junit测试类?,java,maven,groovy,junit,Java,Maven,Groovy,Junit,在一个基于Maven的Groovy项目中,我将嵌入式数据库与我的一些JUnit测试套件一起使用 因为这个嵌入式数据库需要大量的设置,所以我决定创建一个Groovy特性。该特性将具有静态设置和拆卸方法。多亏了@BeforeAll和@aftereall注释,实现此特性的任何JUnit 5类都将在套件的开始和结束时调用这些方法一次 trait EmbeddedDatabaseSupport { @BeforeAll static setup() { ... }

在一个基于Maven的Groovy项目中,我将嵌入式数据库与我的一些JUnit测试套件一起使用

因为这个嵌入式数据库需要大量的设置,所以我决定创建一个Groovy特性。该特性将具有
静态
设置和拆卸方法。多亏了
@BeforeAll
@aftereall
注释,实现此特性的任何JUnit 5类都将在套件的开始和结束时调用这些方法一次

trait EmbeddedDatabaseSupport {

   @BeforeAll
   static setup() {
      ...
   }

   @AfterAll
   static teardown() {
      ...
   }

}
当我直接在IntelliJ中运行我的测试套件类时,它工作得很好

但是,当我使用Maven运行所有测试套件(即
/mvnw test
)时,会出现如下编译错误:

[ERROR] target/generated-sources/groovy-stubs/test/MyTest.java:[27,55] setup() in MyTest cannot implement setup() in EmbeddedDatabaseSupport
  overriding method is static

你知道为什么这可以通过IDE直接工作,但在Maven中却失败了吗?我使用的是
gmavenplus插件的
1.8.1版
,用于我所有的Groovy编译。

我有两种可能的解释:

第一个:

Groovy trait的实现方式是将编译时转换应用于实现该trait的类

只要实现类也是Groovy类,就不应该有问题,但是编译错误表明问题在
MyTest.java
中,因此它是一个java类,因此不应该工作

看,它似乎描述了类似的情况

但是我没有检查最新的groovy版本

另一种“理论”:

当您使用
gmavenplus
插件时,它有一个相当大的目标列表,应该明智地进行配置。所以它的配置可能是错误的。
有关这些目标的列表和一般说明,请参见。

可能值得检查您在IDE中使用的groovy/java版本,例如,您可以通过添加一些类似以下的代码:
println“groovy${GroovySystem.version}-JVM:${System.properties['java.version']}”
,然后将它们与maven使用的版本进行比较。看起来到处都是Java 1.8和Groovy 2.5.8。
[ERROR] target/generated-sources/groovy-stubs/test/MyTest.java:[27,55] setup() in MyTest cannot implement setup() in EmbeddedDatabaseSupport
  overriding method is static