cargo test map

테스트 조직화는 위치와 접근 권한을 함께 고르는 일이다

같은 `cargo test` 안에서도 src 내부 테스트, tests 디렉터리의 외부 관점 테스트, 도우미 모듈은 서로 다른 컴파일 단위와 접근 범위를 갖는다.

유닛 테스트

위치 src/*.rs
컴파일 #[cfg(test)] 때만 포함
접근 use super::*로 비공개 함수까지 가능

통합 테스트

위치 tests/*.rs 각 파일
컴파일 Cargo가 테스트 크레이트로 자동 인식
접근 외부 사용자처럼 공개 API만 호출

공유 도우미

위치 tests/common/mod.rs
호출 mod common; 후 setup 재사용
출력 running 0 tests 섹션을 만들지 않음
선택 기준

무엇을 보장하려는지 먼저 고른다

구현 세부: unit 공개 조합: integration 공통 준비: common/mod.rs
바이너리 크레이트

테스트할 로직은 lib.rs로 빼야 한다

`src/main.rs`만 있는 실행 파일은 tests 디렉터리에서 함수를 가져올 수 없다. 핵심 로직을 `src/lib.rs`에 두고 main은 실행 진입점으로 작게 남긴다.

실행 순서

유닛 테스트가 실패하면 통합 테스트와 문서 테스트 절은 진행되지 않는다. 따라서 작은 범위의 실패를 먼저 고치고, 공개 API 관점의 실패를 그다음에 해석한다.