首页 > 解决方案 > 如何在 Rust 中运行任何测试之前运行设置代码?

问题描述

我有一个 Rust 应用程序(一个简单的解释器),在环境可用之前需要一些设置(初始化一个 repo)。

我知道 Rust 以多线程方式运行它的测试(通过 cargo test),所以我需要在任何测试运行之前初始化 repo。我还需要每次运行只做一次,而不是在每次测试之前。

在 Java 的 JUnit 中,这将通过 @BeforeClass(或 JUnit 5 中的 @BeforeAll)方法来完成。我怎样才能在 Rust 中实现同样的目标?

标签: unit-testingrust

解决方案


没有内置的东西可以做到这一点,但这应该会有所帮助(您需要initialize() 在每次测试开始时调用):

use std::sync::Once;

static INIT: Once = Once::new();

pub fn initialize() {
    INIT.call_once(|| {
        // initialization code here
    });
}

推荐阅读