gpt4 book ai didi

testing - 通过使用 "cargo test"的功能标志运行其他测试

转载 作者:行者123 更新时间:2023-11-29 07:45:38 26 4
gpt4 key购买 nike

我有一些测试想在使用 cargo test 时忽略,并且只有在显式传递功能标志时才运行。我知道这可以通过使用 #[ignore]cargo test -- --ignored 来完成,但出于其他原因,我想进行多组忽略测试.

我试过这个:

#[test]
#[cfg_attr(not(feature = "online_tests"), ignore)]
fn get_github_sample() {}

当我根据需要运行 cargo test 时,这会被忽略,但我无法让它运行。

我尝试了多种运行 Cargo 的方法,但测试仍然被忽略:

cargo test --features "online_tests"

cargo test --all-features

然后我按照 this page 将特征定义添加到我的 Cargo.toml 中, 但他们继续被忽略。

我在 Cargo 中使用工作空间。我尝试在两个 Cargo.toml 文件中添加特征定义,没有任何区别。

最佳答案

没有工作空间

Cargo.toml

[package]
name = "feature-tests"
version = "0.1.0"
authors = ["An Devloper <an.devloper@example.com>"]

[features]
network = []
filesystem = []

[dependencies]

src/lib.rs

#[test]
#[cfg_attr(not(feature = "network"), ignore)]
fn network() {
panic!("Touched the network");
}

#[test]
#[cfg_attr(not(feature = "filesystem"), ignore)]
fn filesystem() {
panic!("Touched the filesystem");
}

输出

$ cargo test

running 2 tests
test filesystem ... ignored
test network ... ignored

$ cargo test --features network

running 2 tests
test filesystem ... ignored
test network ... FAILED

$ cargo test --features filesystem

running 2 tests
test network ... ignored
test filesystem ... FAILED

(为了更好的展示效果去掉了一些输出)

有工作空间

布局

.
├── Cargo.toml
├── feature-tests
│   ├── Cargo.toml
│   ├── src
│   │   └── lib.rs
├── src
│   └── lib.rs

feature-tests 包含上面第一部分的文件。

Cargo.toml

[package]
name = "workspace"
version = "0.1.0"
authors = ["An Devloper <an.devloper@example.com>"]

[features]
filesystem = ["feature-tests/filesystem"]
network = ["feature-tests/network"]

[workspace]

[dependencies]
feature-tests = { path = "feature-tests" }

输出

$ cargo test --all

running 2 tests
test filesystem ... ignored
test network ... ignored

$ cargo test --all --features=network

running 2 tests
test filesystem ... ignored
test network ... FAILED

(为了更好的展示效果去掉了一些输出)

虚拟工作区

Virtual workspacesnot support specifying features (Cargo issue #4942) .您将需要从子项目中运行测试或指定适当的 Cargo.toml 的路径

布局

.
├── Cargo.toml
└── feature-tests
├── Cargo.toml
└── src
└── lib.rs

feature-tests 包含上面第一部分的文件。

Cargo.toml

[workspace]
members = ["feature-tests"]

输出

$ cargo test --all --manifest-path feature-tests/Cargo.toml --features=network 

running 2 tests
test filesystem ... ignored
test network ... FAILED

$ cargo test --all --manifest-path feature-tests/Cargo.toml

running 2 tests
test filesystem ... ignored
test network ... ignored

(为了更好的展示效果去掉了一些输出)

关于testing - 通过使用 "cargo test"的功能标志运行其他测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48583049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com