在Rust中,是否有任何方法可以在运行所有测试后执行teardown函数(即在cargo test
的末尾)使用标准测试库?
我不想在每个测试后运行一个teardown函数,因为它们已经在这些相关的帖子中讨论过了:
- How to run setup code before any tests run in Rust?
- How to initialize the logger for integration tests?
这些讨论要运行的想法:
- 每次**测试前的设置
- *each**测试前拆卸(使用
std::panic::catch_unwind
)
*所有测试前的设置(使用std::sync::Once
)
- *each**测试前拆卸(使用
一种解决方法是使用shell脚本 Package cargo test
调用,但我仍然很好奇上述方法是否可行。
2条答案
按热度按时间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。vltsax252#
以下是Masklinn提到的自定义测试框架解决方案的示例实现:
这将打印: