gpt4 book ai didi

testing - 运行 `cargo test --workspace` 并排除一项测试

转载 作者:行者123 更新时间:2023-12-04 14:44:11 25 4
gpt4 key购买 nike

我有一个带几个 crate 的工作区。我需要排除一个特定的测试。
我尝试添加环境变量检查,但这不起作用。我猜 cargo test过滤掉环境变量。

// package1/src/lib.rs

// ...

#[cfg(test)]
mod tests {

#[test]
fn test1() {
if std::env::var("CI").is_ok() {
return;
}
// ...
}
}
然后我尝试通过 --exclude 具有各种选项的参数,但它们都不起作用:
  • cargo test --workspace --exclude test1
  • cargo test --workspace --exclude tests:test1
  • cargo test --workspace --exclude tests::test1
  • cargo test --workspace --exclude '*test1'
  • cargo test --workspace --exclude 'tests*test1'
  • cargo test --workspace --exclude package1这将跳过包中的所有测试。
  • cargo test --workspace --exclude 'package1*test1'

  • 如何运行除一个之外的所有工作区测试?

    最佳答案

    排除测试
    通过运行 cargo test -- --help 获得帮助文件列出有用的选项:

    --skip FILTER   Skip tests whose names contain FILTER (this flag can
    be used multiple times)
    关于 --test , 看:
  • What does “--” (double-dash) mean?

  • src/lib.rs
    fn add(a: u64, b: u64) -> u64 {
    a + b
    }

    fn mul(a: u64, b: u64) -> u64 {
    a * b
    }

    #[cfg(test)]
    mod tests {
    use super::{add, mul};

    #[test]
    fn test_add() {
    assert_eq!(add(21, 21), 42);
    }

    #[test]
    fn test_mul() {
    assert_eq!(mul(21, 2), 42);
    }
    }
    使用 cargo test -- --skip test_mul 运行上述内容将给出以下输出:
    running 1 test
    test tests::test_add ... ok
    排除特定包中的测试
    如果要排除工作区中包的特定测试,可以通过以下方式进行,替换 my_packagemy_test用他们适当的名字:
    测试所有,但排除 my_package
    cargo test --workspace --exclude my_package
    然后测试 my_package本身,通过添加 --skip my_test 排除特定测试:
    cargo test --package my_package -- --skip my_test
    有关更多选项,请参阅:
  • The Cargo Book, "cargo-test(1)"

  • 默认排除测试
    或者,您可以添加 #[ignore]归因于默认情况下不应运行的测试。如果您愿意,您仍然可以单独运行它们:
    src/lib.rs
    #[test]
    #[ignore]
    fn test_add() {
    assert_eq!(add(21, 21), 42);
    }
    使用 cargo test -- --ignored 运行测试:
    running 1 test
    test tests::test_add ... ok
    如果你使用 Rust >= 1.51并希望运行所有测试,包括那些标有 #[ignore] 的测试属性,可以通过 --include-ignored .

    关于testing - 运行 `cargo test --workspace` 并排除一项测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66755529/

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