test function anatomy

테스트 함수는 실패했을 때 읽기 쉬운 순서로 만든다

`#[test]` 속성은 실행 대상을 표시하고, 함수 본문은 준비한 상태를 실행한 뒤 단언으로 기대 결과를 고정합니다.

attribute

테스트 실행기가 찾는 표시

`#[test]`가 붙은 함수만 테스트 바이너리의 실행 대상이 됩니다.

arrange

상태와 입력 만들기

구조체 인스턴스나 입력값을 테스트 의도가 드러나게 준비합니다.

act

검사할 코드 호출

메서드나 함수를 한 번 호출해 실제 결과를 얻습니다.

assert

기대 결과 고정

`assert!`, `assert_eq!`, `should_panic` 중 의도에 맞는 실패 방식을 고릅니다.

값 차이를 보고 싶을 때: `assert_eq!`는 실패 시 좌우 값을 보여주므로 디버깅 단서가 많습니다.

조건만 중요할 때: `assert!`는 불리언 조건의 의미가 함수 이름과 함께 읽힐 때 간결합니다.

문맥을 남길 때: 커스텀 메시지에는 입력값이나 실제 결과처럼 다음 행동에 필요한 정보를 넣습니다.