我注意到,如果你在特质实现周围有一个像#[feature(cfg = "nightly")]
这样的功能门,那么即使在每晚cargo test
,也可以通过调用rustc
来跳过doctest。我试过cargo test --all-features
,但结果是一样的。 (当然,注释掉门会导致测试运行。)我没有在Rust Reference中看到任何关于此的内容。
如何确保对功能门控实施的测试运行?
供参考,这是我正在使用的Rust版本。
rustc 1.17.0-nightly (c0b7112ba 2017-03-02)
binary: rustc
commit-hash: c0b7112ba246d96f253ba845d91f36c0b7398e42
commit-date: 2017-03-02
答案 0 :(得分:0)
必须始终明确选择不属于default
集的功能。您可以通过在命令行传递参数或将它们列在[dependencies]
部分(如果它们是依赖项)来实现。
<强>的src / lib.rs 强>
/// ```
/// assert!(false);
/// ```
#[cfg(feature = "nightly")]
trait Foo {}
<强> Cargo.toml 强>
[package]
name = "wuzzy"
version = "0.1.0"
authors = ["An Devloper <an.devloper@example.com>"]
[features]
nightly = []
运行cargo test --features=nightly
会导致断言触发,cargo test
忽略测试。这一切都适用于稳定的Rust。
$ cargo test --features=nightly
Doc-tests wuzzy
running 1 test
test src/lib.rs - Foo (line 1) ... FAILED
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured
$ cargo test
Doc-tests wuzzy
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured