You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编译仅用于Rust crate集成测试的专属二进制文件?

解决方案

这里有两种成熟的实现方案,可以满足仅在测试场景下编译专属二进制的需求:

方案1:配置测试专属二进制(最推荐)

你可以直接在 Cargo.toml 中把你的辅助工具定义为禁用测试框架的集成测试目标,Cargo 只会在执行 cargo test 时编译这部分代码,正常执行 cargo build 时不会处理,完全匹配你要的类似 dev-dependencies 的效果:

  • 把你的工具代码放到你之前尝试的 tests/bin/test_helper.rs 路径下(路径可以自定义)
  • 在项目根目录的 Cargo.toml 中添加如下配置:
[[test]]
# 编译后生成的二进制名称
name = "test-helper"
# 你的工具代码的路径
path = "tests/bin/test_helper.rs"
# 禁用测试框架,让它作为普通二进制运行,而不是被当成测试用例执行
harness = false

后续执行 cargo test 时,这个二进制会自动被编译,生成的产物会放在 target/debug/deps/ 目录下,命名为 test-helper-<hash>,你也可以执行 cargo test --no-run 只编译不运行测试来拿到这个二进制文件。

方案2:用特性开关控制普通二进制编译

如果你还是想把二进制放在 src/bin/ 目录下,可以通过特性开关控制它仅在需要时编译:

  • 在 Cargo.toml 中添加如下配置:
[[bin]]
name = "test-helper"
path = "src/bin/test_helper.rs"
required-features = ["test-helper"]

[features]
default = []
# 仅测试时开启的特性
test-helper = []
  • 正常执行 cargo build 不会编译这个二进制,需要编译时可以执行 cargo test --features test-helper,如果想要每次执行 cargo test 自动带上这个特性,可以在项目的 .cargo/config.toml 中添加别名配置:
[alias]
test = "test --features test-helper"

内容的提问来源于stack exchange,提问作者dimo414

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:36:02