1

我有一个使用 bazel 作为构建和测试系统的仓库。这个 repo 有 python 和 golang。有两种类型的测试,单元测试和集成测试。我想在我们的 CI 中在两个单独的测试步骤中运行它们。添加新测试时,我想自动在 repo 中发现新测试。我们目前正在使用bazel test .... 但这无助于我拆分单元测试和集成测试。是否有任何规则或现有方法可以做到这一点?谢谢。

4

2 回答 2

3

--test_size_filters是最好的方法,因为它是一种广泛使用的解决方案。如果您需要另一种分离,那么标签是可行的:

py_test(
    name = "unit_test",
    tags = ["unit"],
)

py_test(
    name = "integration_test",
    tags = ["integration"],
)

接着

bazel test --test_tag_filters=unit //...
bazel test --test_tag_filters=integration //...
bazel test --test_tag_filters=-integration,-unit //... # each test which is not "unit" nor "integration"
于 2021-04-16T16:29:58.890 回答
2

Bazel 并没有真正的单元测试与集成测试的直接概念,但它确实有测试“大小”的概念,或者测试有多么“重”。该文档页面概述了size测试规则的属性,而测试百科全书提供了很好的概述。

当测试的大小适当时,就可以使用--test_size_filtersflag 来运行该大小的测试。

例如,

bazel test ... --test_size_filters=small用于运行单元测试

bazel test ... --test_size_filters=large用于集成测试

您可能希望为单元测试和集成测试添加额外的标志,因此添加一个新配置.bazelrc可能是一个好主意,然后通过bazel test ... --config=integration例如运行。

于 2021-04-16T11:55:19.807 回答