CARGO TEST FLAGS

cargo test 옵션 구분

cargo test --help를 훑는 것만으로는 테스트 재현이 어렵다. `cargo test filter`는 Cargo가 테스트 이름을 거르고, `--` 뒤의 옵션은 생성된 테스트 바이너리에 전달되어 stdout 캡처, 스레드 수, ignored 테스트 실행을 제어한다.

01

대상 선택

workspace, package, lib, bin, test target 중 어느 범위를 돌릴지 정한다.

큰 workspace에서는 범위 축소가 중요하다
02

이름 필터

`cargo test name`처럼 테스트 이름 일부를 앞쪽 인자로 넘겨 관련 테스트만 실행한다.

모듈 경로도 필터에 걸릴 수 있다
03

바이너리 옵션 구분

`--` 뒤에 --nocapture, --test-threads, --ignored 같은 옵션을 넘긴다.

앞뒤 위치가 다르면 의미가 달라진다
04

병렬성 확인

공유 파일, 포트, 환경 변수를 쓰는 테스트는 스레드 수를 줄이거나 격리한다.

순서 의존 테스트는 병렬에서 흔들린다
05

실패 재현

실패한 테스트 이름, seed, env, stdout 캡처 상태를 기록해 같은 조건으로 다시 돌린다.

재현 명령을 남긴다
filter
테스트 이름 선택 앞쪽 문자열은 실행할 테스트 이름과 경로를 거른다.
부분 일치가 기본이다
--nocapture
출력 표시 테스트 중 println 출력을 캡처하지 않고 보여준다.
디버깅 때 유용하다
--test-threads
병렬 실행 수 공유 상태가 있는 테스트의 경쟁을 줄이거나 재현한다.
근본 원인은 격리해야 한다
--ignored
무시 테스트 실행 기본 실행에서 제외된 느린 테스트나 외부 의존 테스트를 돌린다.
CI 정책을 나눈다

테스트 확인

위치 구분 `--` 앞뒤 옵션이 각각 누구에게 전달되는지 확인한다.
병렬 재현 실패가 --test-threads=1에서 사라지는지 확인해 공유 상태 문제를 의심한다.
출력 캡처 필요한 로그가 --nocapture에서만 보이는지 확인한다.