每次测试都需要我想做的昂贵的事情; 如何在测试之间共享状态,而不是在外部存储它(例如环境变量,文件等)?
不锈钢有一个名为的设置宏before_each
,我想的是类似的东西,shared_values
但是它的变量可以被所有测试访问,并且也可以运行一次(在测试套件的开头).
测试没有什么特别之处.它们是在多个线程中运行的"正义"函数.因此,一个解决方案就是在其他代码中执行相同的操作:创建一个全局可变单例:
#[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变量.