gpt4 book ai didi

testing - 如何从集成测试中调用测试辅助函数?

转载 作者:行者123 更新时间:2023-11-28 20:10:13 25 4
gpt4 key购买 nike

我试图弄清楚如何最好地组织我在 Rust 中的测试,但我遇到了以下问题。我有一个在模块中定义的测试实用程序 (test_util),我希望能够在单元测试和集成测试中使用它。

src/lib.rstest_util的定义:

#[cfg(test)]
pub mod test_util {
pub fn test_helper() {}
}

我可以从另一个模块 src/some_module.rs 中的单元测试访问我的辅助函数:

#[cfg(test)]
pub mod test {
use crate::test_util::test_helper;

#[test]
fn test_test_helper() {
test_helper();
}
}

但是,当我尝试使用集成测试中的实用程序时,如 tests/integration_test.rs 中所示:

use my_project::test_util::test_helper;

#[test]
fn integration_test_test_helper() {
test_helper();
}

我收到以下编译器消息:

8 | use my_project::test_util::test_helper;
| ^^^^^^^^^ could not find `test_util` in `my_project`

为什么不允许从属于该相同项目的集成测试中访问该项目的测试代码是否有充分的理由?我知道集成测试只能访问代码的公共(public)部分,但我认为也允许访问单元测试代码的公共(public)部分是有意义的。有什么解决方法?

最佳答案

test 功能仅在 that crate 上运行测试时启用。集成测试在 crate 的外部运行,因此您无法访问任何在 test 上进行控制的内容。

在我的公司,我们有一个约定,将共享测试实用程序放在包顶层的公共(public) test_utils 模块中。您可以将此模块置于您自己的功能之后,比如 integration_test,您在运行这些测试时始终启用它,但我们目前不关心它。

关于testing - 如何从集成测试中调用测试辅助函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59081271/

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