我有一个Rust应用程序(一个简单的解释器),在环境可用之前需要一些设置(初始化repo).
我知道Rust以多线程的方式运行其测试(通过cargo test),所以我需要在任何测试运行之前初始化repo.我每次运行只需要做一次,而不是在每次测试之前.
在Java的JUnit中,这将通过@BeforeClass(或JUnit5中的@BeforeAll)方法完成.我怎么能在铁 rust 上得到同样的东西?
我有一个Rust应用程序(一个简单的解释器),在环境可用之前需要一些设置(初始化repo).
我知道Rust以多线程的方式运行其测试(通过cargo test),所以我需要在任何测试运行之前初始化repo.我每次运行只需要做一次,而不是在每次测试之前.
在Java的JUnit中,这将通过@BeforeClass(或JUnit5中的@BeforeAll)方法完成.我怎么能在铁 rust 上得到同样的东西?
没有任何内置功能可以做到这一点,但这应该会有所帮助(您需要在每次测试开始时拨打initialize()
):
use std::sync::Once;
static INIT: Once = Once::new();
pub fn initialize() {
INIT.call_once(|| {
// initialization code here
});
}