每個測試都需要一個昂貴的東西, 如何在測試之間共享狀態,缺少外部存儲(例如環境變量,文件等)?在#[test]之間共享動態狀態
Stainless有一個名爲before_each
的建立宏觀的事情,我在考慮類似的事情,說shared_values
,但其變量將所有的測試訪問,這也將一次跑(在測試開始套房)。
每個測試都需要一個昂貴的東西, 如何在測試之間共享狀態,缺少外部存儲(例如環境變量,文件等)?在#[test]之間共享動態狀態
Stainless有一個名爲before_each
的建立宏觀的事情,我在考慮類似的事情,說shared_values
,但其變量將所有的測試訪問,這也將一次跑(在測試開始套房)。
測試沒有什麼特別之處。它們是在多個線程中運行的「正義」函數。因此,一種解決方案是你在其他代碼將同樣的事情:create a global mutable singleton:
#[macro_use]
extern crate lazy_static;
lazy_static! {
static ref DATABASE: String = {
format!("{}{}", "This was", " expensive")
};
}
#[test]
fn one() {
println!("{}", *DATABASE);
}
#[test]
fn two() {
println!("{}", *DATABASE);
}
測試框架沒有提供掛鉤的「之後」的回調,所以沒有很好的途徑來清理這些資源。我不相信Drop
也被稱爲lazy_static變量。
注意:我確認'Drop'沒有爲'lazy_static'變量調用; valgrind *會*抱怨:) –
@MatthieuM。朋友之間還有多少內存泄漏,真的嗎?請注意,如果您故意嘗試泄漏一件事物,但仍想警告其他意外泄漏,您可以隨時向Valgrind添加一次壓制。 – Shepmaster
對我來說,我想運行一些基於web的API的測試,並且我需要獲得每個測試使用的登錄令牌(這反過來將被每個API調用使用)。 – Tshepang