【问题标题】:How to run all JUnit tests with Bazel如何使用 Bazel 运行所有 JUnit 测试
【发布时间】:2020-04-01 20:55:54
【问题描述】:

我一直在尝试使用 Bazel 在一个目录中运行所有 JUnit 测试。据我所知,java_test 规则只能运行特定的类。但是,我正在寻找更像 mvn test 的行为,它运行项目中的所有 JUnit 测试。我怎样才能做到这一点?

【问题讨论】:

    标签: java maven junit bazel


    【解决方案1】:

    典型的组织方式是为每个 Java 测试类或每组相关的 Java 测试类设置一个 java_test 规则。然后 java_tests 可以使用 test_suite 组合在一起,如果这是您想做的事情。

    您可以在一个包中运行所有测试:

    bazel test //some/package:all
    

    或在一个包及其子包中:

    bazel test //some/package/...
    

    或在整个工作区中:

    bazel test //...
    

    关于目标模式的更多信息:https://docs.bazel.build/versions/master/guide.html#target-patterns

    如果您只想要一个在一个目录中运行所有测试的 java_test,您可以执行类似的操作

    java_test(
        name = "tests",
        srcs = glob(["*Test.java"]),
        deps = [ ..... ],
    )
    

    但这可能是也可能不是正确的做法。特别是,如果您只想运行一项测试或一种测试方法(例如使用--test_filter),bazel 仍将构建所有java_test 的依赖项。另请注意,globs 仅在构建包中全局化,不会跨越到其他包中。

    【讨论】:

    • 如果我尝试使用glob 运行目录中的所有测试,我会得到cannot determine test class。但是,我真的只是希望它在当前包中运行所有带有 @Test 注释的测试。有什么建议吗?
    • 您需要一个发现测试类的 junit 测试套件(在 test_class 属性中指定)。看看这里的解决方案:stackoverflow.com/questions/46365464
    猜你喜欢
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2014-01-09
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多