除了外部存储(例如环境变量、文件等),我如何在测试之间共享状态?
Stainless有一个名为before_each
的设置宏,我正在考虑一个类似的东西,比如shared_values
,但是它的变量可以被所有测试访问,并且也可以运行一次(在测试套件的开始).
除了外部存储(例如环境变量、文件等),我如何在测试之间共享状态?
Stainless有一个名为before_each
的设置宏,我正在考虑一个类似的东西,比如shared_values
,但是它的变量可以被所有测试访问,并且也可以运行一次(在测试套件的开始).
考试没什么特别的.它们只是在多个线程中运行的函数.因此,一种解决方案是执行与其他代码相同的操作:create a global mutable singleton:
use once_cell::sync::Lazy; // 1.5.2
static DATABASE: Lazy<String> = Lazy::new(|| format!("{} {}", "This was", "expensive"));
#[test]
fn one() {
println!("{}", *DATABASE);
}
#[test]
fn two() {
println!("{}", *DATABASE);
}
测试框架没有为"after"回调提供挂钩,因此没有很好的途径来清理这个资源.对于单例变量也不会调用Drop
.