根据The Book的建议,我把我的板条箱集成测试移动到了一个
tests
目录中。然而,其中一些测试使用了我不想在板条箱外部导出的函数,所以我不能再在集成测试文件夹中使用它们了。我也会在非测试目的中使用它们,所以它们需要在测试之外编译。我尝试使用pub(restricted)
的变体,但我无法使其工作。理想情况下,我想要像pub(tests)
这样的东西。
目录树(相关部分):
my_crate
|- src
|- parser.rs
|- tests
|- parsing.rs
|- benches
|- parsing.rs
tests/parsing.rs:
extern crate my_crate;
use my_crate::parser::foo;
#[test]
fn temp() {
foo();
}
benches/parsing.rs:
#![feature(test)]
extern crate test;
extern crate my_crate;
use test::Bencher;
use my_crate::parser::foo;
#[bench]
fn temp(b: &mut Bencher) {
b.iter(|| { foo(); });
}
我的当前解决方法是将相关对象设置为公共的并在文档中隐藏(#[doc(hidden)]
),但这并不能传达正确的意图。我能否仅将一个对象公开以用于集成测试/基准测试目的?
#[cfg(test)]
吗? - Matthieu M.