我正在尝试将Bazel用于Java测试。并且需要访问资源下的数据文件。我的项目有标准的Maven结构。我正在使用文件组作为资源,并将其作为java_test中的依赖项。
问题是当我尝试运行测试时,它失败并显示以下错误java.lang.RuntimeException: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/private/var/tmp/_bazel_username/2c26269e9af968f4ce3e88b22720114e/execroot/myproject/bazel-out/darwin-fastbuild/bin/hadoop/com_company_hadoop_search_join_TermTest.jar!/com/company/hadoop/search/join/names.txt
我的src / test / resources / BUILD中有以下内容:
filegroup(
name = "resources",
testonly = 1,
srcs = glob(["**/*.txt"]),
visibility = ["//visibility:public"],
)
以及我的hadoop / BUILD中的以下内容:
java_test(
srcs =
["src/test/java/com/company/hadoop/search/join/TermTest.java"],
resources = ["//hadoop/src/test/resources:resources"],
deps = [
"//src/main/java/com/path/to/my/code",
"//:junit_junit",
],
)
我验证了测试jar的内容和文本文件确实按预期存在。
答案 0 :(得分:0)
我相信您的测试“资源”不是 java资源,而是 data 文件。
java_test(
srcs = [
"src/test/java/com/company/TermTest.java",
],
data = [
"//hadoop/src/test/resources:resources",
],
deps = [
"//src/main/java/com/path/to/my/code"
],
)