在Bazel的java_test
规则中,可以使用--spawn_strategy=local
选项来生成测试进程并将其重定向到文件。通过为构建目标指定--test_output=all
选项,可以将测试输出发送到标准输出以及文件。然后,可以在测试结束后扫描测试输出文件以查找test.xml
文件。
以下是一个例子:
BUILD文件:
java_test(
name = "example_test",
srcs = ["ExampleTest.java"],
deps = ["//path/to:dependency"],
jvm_flags = ["-Dtest.env=prod"],
test_class = "com.example.ExampleTest",
output_to_file = "test_output.xml",
args = [
"--arg1=value1",
"--arg2=value2",
],
size = "medium",
)
该规则生成一个名为example_test
的JUnit测试。--spawn_strategy=local
选项用于生成测试进程并将其重定向到文件test_output.xml
。--test_output=all
选项用于将测试输出发送到标准输出以及文件test_output.xml
。在测试结束后,可以扫描test_output.xml
文件以查找test.xml
文件。
示例测试文件ExampleTest.java
:
import org.junit.Test;
public class ExampleTest {
@Test
public void test() {
// Test implementation code here
}
}
运行测试:
bazel test --test_output=all //path/to:example_test
测试输出将包含以下行:
INFO: Redirecting test output to /tmp/bazel-example_test/test_output.xml
在测试结束后,可以扫描/tmp/bazel-example_test/test_output.xml
文件以查找test.xml
文件。如果test.xml
文件存在,则表明该shard测试失败。