2017-07-06 88 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的推薦方式。請記住,這隻會將用於測試以及的線程數設置爲主線程。