测试资源平衡表-输入路径不存在:

时间:2019-02-02 07:13:28

标签: bazel

我正在尝试将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的内容和文本文件确实按预期存在。

1 个答案:

答案 0 :(得分:0)

我相信您的测试“资源”不是 java资源,而是 data 文件。

使用data attribute

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"
    ],    
)