질문 배경:
Arrange-Act-Assert (AAA) 패턴은 테스트 구조를 단순화하고 가독성을 높이기 위해 제안되었습니다. 이 패턴은 현대 테스트 프레임워크에서 활발히 사용되며 모든 종류의 자동 테스트를 작성할 때 사실상 표준입니다.
문제:
명확한 구조가 없으면 테스트 케이스가 복잡해지고 읽기 어렵고 유지 관리가 힘들어집니다. 데이터 준비, 테스트할 행동 호출, 결과 검증 간의 혼란이 발생합니다. 이는 기술 부채와 테스트 오류를 초래하게 됩니다.
해결책:
테스트를 작성할 때 AAA 패턴을 철저히 준수해야 합니다.
주요 특징:
테스트가 명백한 경우 AAA 순서를 위반할 수 있습니까?
보통은 불가능합니다. AAA 구조에서 벗어나는 것은 다른 개발자에게 테스트의 가독성을 떨어뜨리며 유지 관리 시 오류에 취약하게 만듭니다.
짧은 테스트의 경우 Act와 Assert를 하나의 표현으로 합치는 것이 허용됩니까?
이것은 피하는 것이 좋습니다. 이렇게 하면 이해와 미래의 테스트 확장이 어렵게 됩니다.
Arrange 단계에 데이터 정리(logic cleanup) 로직을 포함해야 합니까?
아니요. Cleanup 또는 Teardown은 일반적으로 테스트 프레임워크의 훅(후행 메소드)에서 별개의 메소드로 구현됩니다.
데이터베이스에 레코드를 추가하는 테스트는 먼저 검사를 수행한 후 레코드를 추가합니다. 중간에 임의의 어설트가 방해가 됩니다.
장점:
단점:
테스트는 데이터 정리로 시작하고, 그 다음 레코드를 추가한 후 결과를 검증하며, 철저히 AAA에 따라 진행됩니다.
장점:
단점: