我有一个多工作空间货运项目:
cli/
server/
test/
Cargo.toml
在父母
Cargo.toml
[workspace]
members = [
"server",
"cli",
"tests",
]
resolver = "1"
在
test
工作区中,有一堆集成测试,这些测试取决于 cli
板条箱的构建。所以,我只想运行 cargo test
来运行所有依赖于构建的 cli
可执行文件的测试。但现在失败了:
test tests::should_output_help ... FAILED
failures:
---- tests::should_output_help stdout ----
Error: Cause: Cargo command not found: /Users/l3r8y/code/fakehub/target/debug/cli
但是如果我在测试之前运行
cargo build
一切都会好起来的。所以问题是 – 是否可以仅在构建 cargo test
后才使 cli
构建 cli
创建并运行测试?
Cargo 特别支持特定包的测试访问该包中的二进制文件。它还没有任何东西可以使用来自单独包的二进制文件(这将是artifact dependency,尚未实现)。因此:
test/
包移动到 cli/tests/
(cli
包的集成测试位置)。env!("CARGO_BIN_EXE_cli")
作为要执行的命令的路径。 (文档)