개요
단위 테스트 작성 중 의미있는 Naming Convention에 관해 고민하다 7Popular Unit Test Naming Conventions 글을 보며 정리한 글입니다. 그 외에도 단위테스트 활용방법 글을 읽으면 단위 테스트 작성 시 도움이 될 것 같습니다.
의미있는 Naming Convention
메서드명_테스트상태_기대결과
예시) 성인인증 시 18세 이하일 경우 False
void isAdult_AgeLessThan18_False() {}
만약 메소드 이름이 코드 리팩터링의 일부로 변경된다면, 이와 같이 테스트 이름도 변경되어야 하고, 그렇지 않으면 다음과 같이 변경되기가 어려워집니다
메서드명_기대결과_테스트상태
ex) 성인인증 시 18세 이하일 경우 False
void isAdult_False_AgeLessThan18(){}
위에서 약간 조정된 Naming Convention이지만 해당 기법을 권장합니다. 이 기법은 메서드 이름이 변경되면 나중에 이해하기 어렵다는 단점도 있습니다.
test[테스트 할 기능]
ex) 성인인증 시 18세 이하일 경우 False
void testIsNotAnAdultIfAgeLessThan18(){}
테스트 할 기능이 테스트 이름의 일부로 작성되므로 테스트를 쉽게 읽을 수 있습니다. 그러나 "test" 접두사가 중복된다는 주장이 있지만, 일부 개발자는 해당 명명규칙을 사용합니다.
테스트 할 기능
ex) 성인인증 시 18세 이하일 경우 False
void IsNotAnAdultIfAgeLessThan18(){}
많은 사람들이 테스트 방법으로 식별하기 위해 주석을 사용하기 때문에 테스트할 형상을 단순히 작성하는 것이 낫다고 생각해 해당 명명규칙을 사용합니다. 또한 문서화 대체 형식으로 수행하고 code smell을 방지하기 위해 권장하는 명명규칙입니다.
Should_기대결과_When_테스트상태
ex) 성인인증 시 18세 이하일 경우 False
void Should_ThrowException_When_AgeLessThan18(){}
해당 명명규칙은 읽기 쉽기 때문에 많이 사용합니다.
When_테스트상태_Expect_기대결과
ex) 성인인증 시 18세 이하일 경우 False
void When_AgeLessThan18_Expect_isAdultAsFalse(){}
Given_사전조건_When_테스트상태_Then_기대결과
ex) 성인인증 시 18세 이하일 경우 False
void Given_User_When_AgeLessThan18Test_Then_isAdultFalse(){}
해당 명명규칙은 행동주도개발(BDD)의 일부로 개발된 명명 규칙을 기반으로 합니다.
전제 조건, 테스트 대상 상태 및 예상 행동을 제시할 수 있도록 합니다.
'Spring' 카테고리의 다른 글
쿠폰 발급 서비스 동시성 처리하기 1 - (1/3) (feat. synchronized) (0) | 2024.01.15 |
---|---|
[CountDownLatch] 동시성 처리 테스트를 위한 CountDownLatch 사용법 (0) | 2024.01.15 |
Spring에서 지연로딩 데이터 갖고오기 (0) | 2023.06.02 |
Nexus3를 이용한 Spring 라이브러리 배포 및 사용하기 (0) | 2023.05.23 |
Spring Event를 이용한 의존성 분리 (EventListener, TransactionalEventListener) (1) | 2023.05.11 |