每次测试都需要我想做的昂贵的事情; 如何在测试之间共享状态,而不是在外部存储它(例如环境变量,文件等)?
Stainless有一个名为before_each
的设置宏,我正在考虑类似的事情,比如说shared_values
,但是它的变量可以被所有测试访问,哪个会也可以运行一次(在测试套件的开头)。
答案 0 :(得分:6)
测试没什么特别之处。它们是在多个线程中运行的“正义”函数。因此,一个解决方案就是在其他代码中执行相同的操作: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);
}
测试框架没有为“after”回调提供钩子,所以没有很好的途径来清理这个资源。我不相信lazy_static变量也会调用Drop
。