unit-testing - 如何在 Rust 中运行任何测试之前运行设置代码?
问题描述
我有一个 Rust 应用程序(一个简单的解释器),在环境可用之前需要一些设置(初始化一个 repo)。
我知道 Rust 以多线程方式运行它的测试(通过 cargo test),所以我需要在任何测试运行之前初始化 repo。我还需要每次运行只做一次,而不是在每次测试之前。
在 Java 的 JUnit 中,这将通过 @BeforeClass(或 JUnit 5 中的 @BeforeAll)方法来完成。我怎样才能在 Rust 中实现同样的目标?
解决方案
没有内置的东西可以做到这一点,但这应该会有所帮助(您需要initialize()
在每次测试开始时调用):
use std::sync::Once;
static INIT: Once = Once::new();
pub fn initialize() {
INIT.call_once(|| {
// initialization code here
});
}
推荐阅读
- python - 使用 Python 在 JSON 中查找特定网站的所有 URL
- r - R(ggplot2)中的密度图,按变量着色,返回与直方图和频率图非常不同的分布?
- javascript - 不能使用 Vue JS 作为 CDN 的 3rd 方组件
- angularjs - 在循环中延迟调用 API
- bash - 全局匹配只返回第一个匹配
- javascript - 如何通过数组中的值获取 JavaScript 对象中的键?
- ruby - HTTP:打开连接后是否需要关闭连接?
- reporting-services - 在SSRS中获取表达式中的第二个字母
- arrays - 如何迭代 AJAX 调用并推送到数组
- python - 我是否应该担心 FFT 偏离 6 倍?