Testing 如何从集成测试中调用测试助手函数?

Testing 如何从集成测试中调用测试助手函数?,testing,rust,integration-testing,Testing,Rust,Integration Testing,我正试图找出如何最好地组织Rust中的测试,我遇到了以下问题。我在模块中定义了一个测试实用程序(test\u util),我希望能够从单元测试和集成测试中使用它 src/lib.rs中测试工具的定义: #[cfg(测试)] pub mod test_util{ pub fn test_helper(){} } 我可以从另一个模块中的单元测试访问helper函数,src/some_module.rs: #[cfg(测试)] pub-mod测试{ 使用板条箱::test_util::test_he

我正试图找出如何最好地组织Rust中的测试,我遇到了以下问题。我在模块中定义了一个测试实用程序(
test\u util
),我希望能够从单元测试和集成测试中使用它

src/lib.rs
中测试工具的定义:

#[cfg(测试)]
pub mod test_util{
pub fn test_helper(){}
}
我可以从另一个模块中的单元测试访问helper函数,
src/some_module.rs

#[cfg(测试)]
pub-mod测试{
使用板条箱::test_util::test_helper;
#[测试]
fn test_test_helper(){
test_helper();
}
}
但是,当我尝试使用集成测试中的实用程序时,如
tests/integration\u test.rs

使用my_project::test_util::test_helper;
#[测试]
fn集成测试辅助程序(){
test_helper();
}
我收到以下编译器消息:

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

不允许从属于同一项目的集成测试中访问项目中的测试代码,有什么好的理由吗?我知道集成测试只能访问代码的公共部分,但我认为也允许访问单元测试代码的公共部分是有意义的。对此有什么解决办法?

只有在该板条箱上运行测试时,
测试功能才会启用。集成测试在机箱外部运行,因此您无法访问在
test
上选通的任何内容

在我的公司,我们有一个惯例,将共享测试实用程序放在板条箱顶层的公共
test\u utils
模块中。您可以将此模块置于自己的功能后面,比如说
integration\u test
,您在运行这些测试时总是启用这些功能,但我们目前并不担心这一点