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

tsh*_*ang 7 rust

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

不锈钢有一个名为的设置宏before_each,我想的是类似的东西,shared_values但是它的变量可以被所有测试访问,并且也可以运行一次(在测试套件的开头).

She*_*ter 7

测试没有什么特别之处.它们是在多个线程中运行的"正义"函数.因此,一个解决方案就是在其他代码中执行相同的操作:创建一个全局可变单例:

#[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);
}
Run Code Online (Sandbox Code Playgroud)

测试框架没有为"后"回调提供钩子,所以没有很好的途径来清理这个资源.我也不相信Droplazy_static变量.