unit-testing - 在 bazel 单元测试中查找文件作为外部依赖项

标签 unit-testing bazel

我有一个 bazel 项目,称之为 foo,带有 Catch从相对路径读取文件的 C++ 单元测试。

单元测试在 foo 项目中运行良好。

我正在使用 foo 作为另一个项目的外部依赖项,将其称为 bar。我希望单元测试能够在 bar 中工作,但在 bar 中他们找不到文件。

我不明白的是如何以独立于项目的方式查找文件。在项目 foo 中,文件放置在:

~/.cache/<blah>/<blah>/<testname.runfiles>/__main__/source/

但是在项目栏中,文件放置在

  ~/.cache/<blah>/<blah>/<testname.runfiles>/__main__/external/bars_archive_name/source

bazel 提供的 TEST_SRCDIR 环境变量指向该目录,但由于两个不同的目录结构,这没有帮助。

单元测试无法知道 bar 的存档名称(因为该名称是在 foo 的 WORKSPACE 文件中指定的),因此无法找到这些文件。单元测试也不知道是否应该附加外部。

这看起来应该很简单,所以我希望我遗漏了一些明显的东西。

最佳答案

你的单元测试是如何依赖项目栏的文件的?单元测试是否要求文件存在于相对路径下?

(另外,您的测试使用什么语言?您的项目设置越具体,我就越能提供帮助:))

您是否考虑过通过标志/参数将测试依赖项的位置传递给您的测试?如果有可能,Bazel 可以帮助将这些路径解析为绝对路径(如果您使用 $(location) substitution) .

例如,您的测试目标可能如下所示:

my_unit_test(
  name = "test",
  srcs = ["mysrc.file"],
  deps = ["@bar//barproj/other.file"],
  args = [
    "$(location @bar//barproj/other.file)",
  ],
)

如果这还不够,请告诉我!

关于unit-testing - 在 bazel 单元测试中查找文件作为外部依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50839411/

相关文章:

java - 我应该出于什么原因 mock ?

unit-testing - 如何避免 JUnit 测试中的多个断言?

C# "internal"进行单元测试时访问修饰符

android - 如何将 Android 的导航架构组件与 Bazel 一起使用?

ubuntu - bazel 构建的 deb 可以上传到 PPA 吗?

unit-testing - 单元测试失败

unit-testing - 如何使用 jasmine 模拟 Angular 服务?

bazel - 任何帮助从旧版本迁移到新版本的 Bazel 文档?

bazel - 是否可以针对 bazel 中的当前编译器定义 CXXFLAGS?

versioning - 如何在分析时在 bazel 中运行 shell 命令?