如何 运行 库测试和文档测试而不是集成测试

How to run library tests and doc tests but not integration tests

是否可以使用 cargo 命令来 运行 库测试(即,cargo test --lib)和文档测试 而无需 运行进行任何集成测试(即在 crate 的顶级 tests 目录中的测试)?在没有 运行 编译集成测试的情况下获得奖励积分。

这是大局。我的箱子是 Web 服务的客户端库,而 HTTP 服务器不是箱子的一部分。我已经将我的箱子组织成:

  1. 库测试,取决于 HTTP 服务器,
  2. 文档测试, 取决于 HTTP 服务器,
  3. 集成测试,要求 HTTP 服务器 运行在本地主机上。

因此,有时在构建箱子的机器上安装 HTTP 服务器 运行 是不可行的——例如,Travis CI 构建代理。在这些情况下,我想构建所有测试,但从 运行ning 中排除所有集成测试,因为每个集成测试都会失败。

正在查看 cargo help test(您可能有):

  • 运行 仅在库中测试:cargo test --lib
  • 运行 仅 doc-tests: cargo test --doc
  • tests/ 中构建测试而不 运行 对它们进行测试:cargo test --no-run --test NAME,但您需要自己枚举它们。同样,在这里向 Cargo 添加一些东西可能是有意义的。

与此同时,集成测试实际上是将您的库用作依赖项的独立箱子。您可以使用 Cargo.toml 文件和 [dependencies] foo = {path = "…"} 使它们显式化,这样 cargo test 在您的 main crate 上没有参数就不会 运行 它们。