2017-07-06 93 views
3

我有测试共享一个共同的资源,不能同时执行。这些测试失败,cargo test,但与RUST_TEST_THREADS=1 cargo test一起工作。如何限制Cargo.toml中的测试线程数量?

我可以修改测试以在全局互斥体上等待,但是如果有更简单的方法强制cargo为我设置此环境变量,我不想混乱它们。

+0

尽管我喜欢重复,但它似乎并不是重复的“有没有办法告诉Cargo在主线程上运行测试?”。这个问题具体是问是否有一种方法来设置文件系统中的某个线程的数量,以便不需要传递环境变量或命令行选项。对于这个问题,即使将线程数设置为1也不起作用,因为它仍然是与main分离的线程。 – Shepmaster

+0

有一个[打开公关](https://github.com/rust-lang/rust/pull/42684),建议添加一个属性如'#[serial]'到测试运行器,这会导致标记的测试不是平行运行,但是任何人都会猜测这是否会被接受。 – Shepmaster

回答

5

从Rust 1.18开始,就没有这种东西。事实上,甚至没有更简单的选项来禁用并行测试。
Source

然而,有什么可以帮助你的是cargo test -- --test-threads=1,这是做你在做什么,在RUST_TEST_THREADS ENVVAR的推荐方式。请记住,这只会将用于测试以及的线程数设置为主线程。