如何对某个配置下定义的函数进行测试?
How to make a test for a function defined under some configuration?
如何对函数进行单元测试定义了一些配置,如下所示
struct I32Add;
impl I32Add{
#[cfg(unstable)]
fn add(x:i32, y:i32) -> i32{x+y}
}
#[test]
fn add_test(){
assert_eq!(I32Add::add(1,2),3)
}
当然,测试不行。如何让它发挥作用?
您可以像对函数所做的那样将 #[cfg(unstable)]
添加到测试中。所以只有编译该函数时才会编译测试:
#[cfg(unstable)]
#[test]
fn add_test() {
assert_eq!(I32Add::add(1, 2), 3)
}
要编译您的函数和测试并运行,您必须启用 unstable
配置选项:
RUSTFLAGS="--cfg unstable" cargo test
但是,我建议您使用 cargo feature 而不是配置选项来有条件地启用部分代码库。
struct I32Add;
impl I32Add{
#[cfg(feature = "unstable")]
fn add(x:i32, y:i32) -> i32{x+y}
}
#[cfg(feature = "unstable")]
#[test]
fn add_test(){
assert_eq!(I32Add::add(1,2),3)
}
在你的 cargo.toml
:
[features]
unstable = []
然后 运行 它就像:
cargo test --features=unstable
参见:
- How do I use conditional compilation with `cfg` and Cargo?
- Is it possible to write a test in Rust so it does not run on a specific operating system?
如何对函数进行单元测试定义了一些配置,如下所示
struct I32Add;
impl I32Add{
#[cfg(unstable)]
fn add(x:i32, y:i32) -> i32{x+y}
}
#[test]
fn add_test(){
assert_eq!(I32Add::add(1,2),3)
}
当然,测试不行。如何让它发挥作用?
您可以像对函数所做的那样将 #[cfg(unstable)]
添加到测试中。所以只有编译该函数时才会编译测试:
#[cfg(unstable)]
#[test]
fn add_test() {
assert_eq!(I32Add::add(1, 2), 3)
}
要编译您的函数和测试并运行,您必须启用 unstable
配置选项:
RUSTFLAGS="--cfg unstable" cargo test
但是,我建议您使用 cargo feature 而不是配置选项来有条件地启用部分代码库。
struct I32Add;
impl I32Add{
#[cfg(feature = "unstable")]
fn add(x:i32, y:i32) -> i32{x+y}
}
#[cfg(feature = "unstable")]
#[test]
fn add_test(){
assert_eq!(I32Add::add(1,2),3)
}
在你的 cargo.toml
:
[features]
unstable = []
然后 运行 它就像:
cargo test --features=unstable
参见:
- How do I use conditional compilation with `cfg` and Cargo?
- Is it possible to write a test in Rust so it does not run on a specific operating system?