rust 是否有一种方法可以在所有测试运行后执行拆卸功能?

zlhcx6iw  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(113)

在Rust中,是否有任何方法可以在运行所有测试后执行teardown函数(即在cargo test的末尾)使用标准测试库?
我不想在每个测试后运行一个teardown函数,因为它们已经在这些相关的帖子中讨论过了:

这些讨论要运行的想法:

一种解决方法是使用shell脚本 Package cargo test调用,但我仍然很好奇上述方法是否可行。

cngwdvgl

cngwdvgl1#

我不确定是否有一种方法可以使用Rust的内置测试功能previous inquiries seem to have yielded little进行全局(“会话”)拆除,除了“可能是一个构建脚本”。第三方测试系统(例如光泽或不 rust 钢)可能有这种选择,但可能值得研究其确切功能
或者,如果夜间适合there's a custom test frameworks feature being implemented,则you might be able to use for that purpose
除此之外,你可能想看看macro_rules!来清理一些样板,这就是像burntsushi这样的人做的e.g. in the regex package

vltsax25

vltsax252#

以下是Masklinn提到的自定义测试框架解决方案的示例实现:

#![feature(custom_test_frameworks)]
#![feature(test)]
#![test_runner(custom_test_runner)]

extern crate test;

use test::{test_main_static, TestDescAndFn};

fn main() {}

pub fn custom_test_runner(tests: &[&TestDescAndFn]) {
    println!("Setup");
    test_main_static(tests);
    println!("Teardown");
}

#[cfg(test)]
mod tests {

    #[test]
    fn test1() {
        println!("Test 1")
    }

    #[test]
    fn test2() {
        println!("Test 2")
    }
}

这将打印:

Setup
Test 1
Test 2
Teardown

相关问题