gpt4 book ai didi

java - 如何将带有静态方法的 Groovy 特征应用到 Junit 测试类?

转载 作者:行者123 更新时间:2023-12-01 19:14:05 29 4
gpt4 key购买 nike

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

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

trait EmbeddedDatabaseSupport {

@BeforeAll
static setup() {
...
}

@AfterAll
static teardown() {
...
}

}
class MyTest implements EmbeddedDatabaseSupport {

@Test
void testMethod() {
...
}

}

当我直接在 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-plugin 版本 1.8.1 进行所有 Groovy 编译。

最佳答案

我有两种可能的解释:

第一个:

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

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

参见This SO thread它看起来描述了类似的情况。

不过我没有检查最新的 groovy 版本。

另一种“理论”:

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

关于java - 如何将带有静态方法的 Groovy 特征应用到 Junit 测试类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438696/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com