我有几个测试:
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn foo() {
// Must be run sequentially
}
#[test]
fn bar() {
// Must be run sequentially.
}
#[test]
fn baz() {
// Can be run in parallel.
}
#[test]
fn qux() {
// Can be run in parallel.
}
}
foo()
和bar()
必须按顺序运行,因为它们可能会自行竞争或未显示其他测试。
我可以仅使用一个线程来测试cargo test -- --test-threads=1
,以防止出现竞争情况。但是我不想这样做,因为我希望baz()
和qux()
可以并行运行。
我还可以将#[ignore]
属性放在foo()
和bar()
上。调用cargo test
并行调用baz()
和qux()
,然后分别运行foo()
和bar()
,但这是很多工作。
是否有任何方法可以确保foo()
和bar()
依次运行,但是所有其他测试都与cargo test
的一次调用并行运行?供参考,here是当前属性。