gpt4 book ai didi

rust - 内置集成测试是同时运行还是顺序运行?

转载 作者:行者123 更新时间:2023-11-29 07:42:41 24 4
gpt4 key购买 nike

我正在编写集成测试来处理数据库。在每次测试开始时,我都会清除存储并创建一些数据。

我希望我的测试按顺序运行,以确保我使用的是空数据库。但似乎集成测试是同时运行的,因为有时我会在清理数据库后获得现有文档。

我检查了数据库,发现在不同测试中创建的文档具有大致相同的创建时间,即使我为每个测试添加了延迟(使用 std::thread::sleep_ms(10000))。

您能否阐明集成测试的运行方式以及是否可以按顺序运行它们?

最佳答案

内置测试框架默认并发运行。它旨在为测试提供有用但简单的支持,涵盖许多需求,并且许多功能可以/应该通过每个独立于其他测试的测试进行测试。 (独立意味着它们可以并行运行。)

也就是说,它会监听 RUST_TEST_THREADS 环境变量,例如RUST_TEST_THREADS=1 cargo test 将在单个线程上运行测试。但是,如果您始终希望在测试中使用此功能,您可能有兴趣不使用 #[test],或者至少不直接使用。

最灵活的方法是通过 cargo 对完全定义自己框架的测试的支持,通过 Cargo.toml 中的以下内容:

[[test]]
name = "foo"
harness = false

这样,cargo test 将编译并运行 tests/foo.rs 作为二进制文件。这可以确保操作被适本地排序/重置。

或者,也许是像 stainless 这样的框架具有您需要的功能。 (我没用过所以不确定。)

关于rust - 内置集成测试是同时运行还是顺序运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30639965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com