Gradle 中的 Quarkus 测试 - 如何处理 test 和 native-test

Quarkus testing in Gradle - How to deal with test and native-test

我有一个 Quarkus 项目,它有一个 test 源文件夹和一个 native-test 文件夹。指导似乎是我会在 native-test 文件夹中进行很多相同的测试(特别是 @QuarkusIntegrationTests)。有没有一种方法可以指定在 test 中使用与 native-test 相同的源集?

人们可能希望在另一个源集中进行不同的测试是有道理的,但对我来说,必须跟踪两个源集之间的相同测试似乎很乏味。有没有办法告诉 nativeTest 任务使用来自 test 源集的测试?那是我想要的吗?我是否正确地形象化了这些测试的目的?

我假设我可以在 Gradle 中设置一些脚本,以便在 testNative 运行时将相关测试复制到 native-test 目录,但这感觉很糟糕。

nativeTest 任务继承自 Test 任务,因此您应该可以将其配置为 test 任务。

您可能面临的一个问题是 gradle test 将 运行 @QuarkusIntegrationTest 使用默认包装(这可能需要时间)。 gradle nativeTest 将 运行 所有测试事件 @QuarkusTest

在任务配置中使用 include / exclude 可能会导致您想要的结果:

nativeTest {
  testClassesDirs = project.sourceSets.nativeTest.output.classesDirs
  include '**/it/*'
}

test {
  exclude '**/it/*'
}

gradle test 将 运行 来自 src/test/java 的所有测试,但 it 包中的测试除外。 gradle nativeTest 只会从 it 包中的 src/test/java 进行 运行 测试。