相关疑难解决方法(0)

如何初始化集成测试的记录器?

我有一个包含src目录中的生产代码和目录中的集成测试的箱子tests.生产代码使用log宏.

我想在运行集成测试时初始化一个全局记录器(例如env_logger::init().unwrap();)有几个测试并且测试顺序没有定义,所以我不知道我应该在哪个测试中放置initialize命令.

有什么方法可以做得很好吗?也许通过覆盖测试main功能?

rust

16
推荐指数
5
解决办法
2072
查看次数

如何在Rust库中运行清理代码?

我正在制作一个跨平台终端库.因为我的库改变了终端的状态,所以我需要恢复进程结束时对终端所做的所有更改.我现在正在实现此功能,并思考如何在最后恢复到原始终端状态的方法.

我认为在程序启动时初始化静态变量,并且当程序结束时,这个静态变量将被销毁.由于我的静态变量是一个已经实现了Drop特征的结构,它将在程序结束时被删除,但事实并非如此,因为字符串"drop called"从不打印:

static mut SOME_STATIC_VARIABLE: SomeStruct = SomeStruct { some_value: None };

struct SomeStruct {
    pub some_value: Option<i32>,
}

impl Drop for SomeStruct {
    fn drop(&mut self) {
        println!("drop called");
    }
}
Run Code Online (Sandbox Code Playgroud)

drop()程序结束时为什么不调用?我的想法是错的,我应该采取另一种方式吗?

static destroy rust

5
推荐指数
2
解决办法
289
查看次数

如何在Rust中运行任何测试之前运行设置代码?

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

我知道Rust是以多线程方式运行其测试(通过货物测试)的,所以我需要在运行任何测试之前初始化存储库。我还需要每次运行只执行一次,而不是每次测试之前。

在Java的JUnit中,这可以通过@BeforeClass(或JUnit 5中的@BeforeAll)方法完成。我如何在Rust中达到同一目的?

unit-testing rust

3
推荐指数
3
解决办法
111
查看次数

标签 统计

rust ×3

destroy ×1

static ×1

unit-testing ×1