在#[test]之间共享动态状态

时间:2017-01-09 15:12:37

标签: rust

每次测试都需要我想做的昂贵的事情; 如何在测试之间共享状态,而不是在外部存储它(例如环境变量,文件等)?

Stainless有一个名为before_each的设置宏,我正在考虑类似的事情,比如说shared_values,但是它的变量可以被所有测试访问,哪个会也可以运行一次(在测试套件的开头)。

1 个答案:

答案 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