The Book에서 제안한대로 내 크레이트의 통합 테스트를 tests
디렉토리로 옮겼습니다. 이러한 테스트 중 일부는 상자 외부로 내보내고 싶지 않은 기능을 사용하지만 더 이상 통합 테스트 폴더에서 사용할 수 없습니다. 나는 비 테스트 목적으로도 이것을 사용하기 때문에 테스트 외부에서 컴파일해야한다.. 내가 pub(restricted)
의 변종을 사용하여 시도했지만, 그것을 작동하게 만들 수 없습니다. 이상적으로 나는 pub(tests)
과 같은 것을 갖고 싶습니다.통합 테스트 및/또는 벤치 마크 용으로 만 객체를 공개 할 수 있습니까?
디렉토리 트리 (관련 비트) :
my_crate
|- src
|- parser.rs
|- tests
|- parsing.rs
|- benches
|- parsing.rs
테스트/parsing.rs :
extern crate my_crate;
use my_crate::parser::foo;
#[test]
fn temp() {
foo();
}
벤치/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)]
)에 관련 개체 pub
을 표시하고 보이지 않게 설정합니다. 적절한 의도를 전달하지는 않습니다. 통합 테스트/벤치마킹 목적으로 객체를 공개 만 만들 수 있습니까?
'# [cfg (test)]'을 시도해 보셨습니까? –
@MatthieuM. 나는 또한 비 - 테스트 목적으로 그들을 필요합니다. – ljedrz
Hum ... 'pub'에만 조건을 넣을 수 있는지 확실치 않습니다. 정의를 복제하는 것이 옵션이 아닌 것 같습니다 : x –