使用 Bazel,我们有一个宏,我们从 BUILD 文件中调用它来调用我们的自定义测试运行器。此宏对 java_test 进行本地调用,类似于:
native.java_test(
name = name,
srcs = srcs,
resources = resources,
use_testrunner = False,
main_class = "com.example.CustomTestRunner",
args = srcs,
deps = deps,
runtime_deps = runtime_deps + ["//bazel/tools/testng:testng_runner"],
**kwargs
)
在我们的 BUILD 文件中,调用宏的目标类似于:
java_custom_test(
name = "test",
srcs = glob(["src/test/java/**/*.java"]) + [
":sdk_gen_model_test",
":sdk_gen_controller_test",
],
resources = glob(["src/test/resources/**/*"]),
deps = [
"@maven//:org_mockito_mockito_core",
"@maven//:org_testng_testng",
],
)
将 srcs 传递给宏中的 args,希望在 CustomTestRunner 中我可以访问所有单元测试文件,这对于 glob(["src/test/java/**/*.java"] 标识的那些文件是正确的)。
但是,在 ":sdk_gen_model_test" 和 ":sdk_gen_controller_test" 的情况下,这两个是指生成单元测试的目标,这些目标会打包到一个 jar 中。不幸的是,这两个标签字符串按原样传递给 CustomTestRunner,我很难弄清楚如何从它们中解析生成的 jar。
所以问题是,我怎样才能让 Bazel 将这两个目标生成的文件列表传递给 CustomTestRunner,或者至少有一些方法可以将这些标签解析为 jar,以便我可以在 CustomTestRunner 中提取文件?