如何测试 Rust 中的可选功能?
How does one test optional features in Rust?
我有一个要添加可选功能的包。我在我的 Cargo.toml:
中添加了一个适当的部分
[features]
foo = []
我为 cfg!
宏的基本功能写了一个实验测试:
#[test]
fn testing_with_foo() {
assert!(cfg!(foo));
}
看来我可以在测试期间通过选项 --features
或 --all-features
:
之一激活功能
(master *=) $ cargo help test
cargo-test
Execute all unit and integration tests and build examples of a local package
USAGE:
cargo test [OPTIONS] [TESTNAME] [-- <args>...]
OPTIONS:
-q, --quiet Display one character per test instead of one line
...
--features <FEATURES>... Space-separated list of features to activate
--all-features Activate all available features
但是 cargo test --features foo testing_with_foo
和 cargo test --all-features testing_with_foo
都不起作用。
执行此操作的正确方法是什么?
您的测试不正确。引用 the Cargo book:
This can be tested in code via #[cfg(feature = "foo")]
.
@Jmb 提出的解决方案:assert!(cfg!(feature = "foo"));
。 Cargo Book 中的内容
This can be tested in code via #[cfg(feature = "foo")]
.
允许确认条件编译是否有效,但不提供可以测试的布尔值。如果要在运行时根据特征进行分支,需要cfg!
.
我有一个要添加可选功能的包。我在我的 Cargo.toml:
中添加了一个适当的部分[features]
foo = []
我为 cfg!
宏的基本功能写了一个实验测试:
#[test]
fn testing_with_foo() {
assert!(cfg!(foo));
}
看来我可以在测试期间通过选项 --features
或 --all-features
:
(master *=) $ cargo help test
cargo-test
Execute all unit and integration tests and build examples of a local package
USAGE:
cargo test [OPTIONS] [TESTNAME] [-- <args>...]
OPTIONS:
-q, --quiet Display one character per test instead of one line
...
--features <FEATURES>... Space-separated list of features to activate
--all-features Activate all available features
但是 cargo test --features foo testing_with_foo
和 cargo test --all-features testing_with_foo
都不起作用。
执行此操作的正确方法是什么?
您的测试不正确。引用 the Cargo book:
This can be tested in code via
#[cfg(feature = "foo")]
.
@Jmb 提出的解决方案:assert!(cfg!(feature = "foo"));
。 Cargo Book 中的内容
This can be tested in code via
#[cfg(feature = "foo")]
.
允许确认条件编译是否有效,但不提供可以测试的布尔值。如果要在运行时根据特征进行分支,需要cfg!
.