【发布时间】:2020-03-23 11:06:21
【问题描述】:
在 Rust 中,有没有办法在使用标准测试库运行所有测试后(即在cargo test 末尾)执行拆卸功能?
我不希望在每个测试之后运行拆卸功能,因为它们已在这些相关帖子中讨论过:
- How to run setup code before any tests run in Rust?
- How to initialize the logger for integration tests?
这些讨论了要运行的想法:
- 每个测试前的设置
-
每个测试前的拆解(使用
std::panic::catch_unwind) - 在所有测试之前设置(使用
std::sync::Once)
一种解决方法是围绕cargo test 调用的shell 脚本,但我仍然很好奇上述是否可行。
【问题讨论】:
-
我试过了,但无法让它工作。可能是this 之类的东西?
-
你可以像
build.rs那样做一个脚本,你可能必须配置一个配置文件 -
你是对的,析构函数不是针对静态变量运行的——参见stackoverflow.com/questions/48732387/…。
-
有一个公认的实验性 RFC 允许自定义测试框架 - 请参阅 this tracking issue。这将为测试带来更大的灵活性,但不幸的是,这方面还没有太大进展。
-
作为@SvenMarnach,我认为除非实施此RFC,否则无法解决此问题。如果您使用 nightly 编译器,您可以使用少数已实现的 AFAIK 来做到这一点
标签: unit-testing testing rust integration-testing teardown