유닛 테스트와 통합 테스트 배치

유닛 테스트는 코드 가까이에서 세부 동작을 확인하고, 통합 테스트는 공개 API를 외부 사용자처럼 호출합니다.

배치 기준 비공개 함수나 작은 단위의 내부 규칙은 모듈 안 tests에, 크레이트의 공개 동작은 tests 디렉터리에 둡니다.

#[cfg(test)]는 cargo test 때만 테스트 모듈을 컴파일해 일반 빌드 산출물에 영향을 주지 않게 합니다.

무엇을 보장하는가?접근 범위가 파일 위치를 결정한다.
내부 불변식src/foo.rs → mod testsprivate 접근 가능
공개 APItests/api.rs외부 crate 관점
공통 준비tests/common/mod.rs통합 테스트가 공유
유닛 테스트

소스 파일 안의 tests 모듈에서 내부 구현까지 빠르게 검증합니다.

비공개 함수

같은 모듈의 자식 테스트 모듈은 부모의 비공개 항목을 볼 수 있습니다.

통합 테스트

tests 디렉터리에서 라이브러리 크레이트를 외부처럼 사용합니다.

서브 모듈

tests/common/mod.rs처럼 공통 준비 코드를 테스트 크레이트에 포함합니다.

테스트 위치 결정

조건부 컴파일
1
대상

검사하려는 동작이 내부 세부인지 공개 API인지 구분합니다.

2
위치

내부는 모듈 안, 외부 관점은 tests 디렉터리에 둡니다.

3
공유

반복 준비 코드는 테스트 전용 모듈로 분리합니다.

테스트 조직화의 핵심은 어떤 수준의 약속을 검증하는지에 따라 위치와 접근 범위를 맞추는 것입니다.