如何获取 Gradle TestKit 测试项目的"源代码集"?



我正在使用Gradle的TestKit,并希望确保插件向sourceSets.main.proto添加正确的路径。

我如何访问这些信息?

我还没有找到从TestKit访问Project对象的方法(我怀疑这是不可能的(。

获取sourceSets.main.proto的一种方法是在测试数据build.gradle文件中创建一个任务。例如:

tasks.register('assertMainProtoSrcDirsIncludesProtopPath') {
doLast {
assert sourceSets.main.proto.srcDirs.contains(file("${rootDir}/${protop.path}"))
}
}

然后可以使用TestKit调用该任务:

@Test
@DisplayName("`sourceSets.main.proto.srcDirs` should include `protop.path`.")
public void sourceSetsMainProtoSrcDirsShouldIncludeProtopPath(final SoftAssertions softly) {
final BuildResult buildResult = gradleRunner
.withPluginClasspath()
.withProjectDir(rootDir.toFile())
.withArguments("--info", "--stacktrace", ":assertMainProtoSrcDirsIncludesProtopPath")
.build();
softly.assertThat(Objects.requireNonNull(buildResult.task(":assertMainProtoSrcDirsIncludesProtopPath")).getOutcome())
.isEqualByComparingTo(SUCCESS);
}

最新更新