테스트 코드 네이밍
메서드명_테스트상태_기대결과
코드 리팩토링으로 인하여 메서드명이 변경되는 경우 테스트 명 또한 변경되어야 하는데, 변경되지 않으면 나중에 이 TC를 이해하기 어렵게 되므로 바람직하지 않다는 의견이 있다.
예시
isAdult_AgeLessThan18_FalsewithdrawMoney_InvalidAccount_ExceptionThrownadmitStudent_MissingMandatoryFields_FailToAdmit
메소드명_기대결과_테스트상태
위와 비슷한 형태이지만, 일부 개발자들은 이런 컨벤션을 사용할 것을 추천한다. 이 컨벤션 또한 메서드명이 바뀌면 나중에 이해하기 어렵다는 단점이 있다.
예시
isAdult_False_AgeLessThan18withdrawMoney_ThrowsException_IfAccountIsInvalidadmitStudent_FailToAdmit_IfMandatoryFieldsAreMissing
test[테스트할 기능]
테스트할 기능이 테스트명의 일부로 사용되어 쉽게 읽을 수 있도록 해 준다.
그러나 "테스트" 접두사가 중복된다는 주장도 있다. 그러나 일부 개발자들은 이러한 형태의 네이밍을 사용하는 것을 좋아한다.
예시
testIsNotAnAdultIfAgeLessThan18testFailToWithdrawMoneyIfAccountIsInvalidtestStudentIsNotAdmittedIfMandatoryFieldsAreMissing
테스트할 기능
문서화된 형태의 유닛 테스트를 수행하므로 권장되는 방법이다.
하지만, 이름에서 예상되는 결과에 대한 단서가 없다.
예시
IsNotAnAdultIfAgeLessThan18FailToWithdrawMoneyIfAccountIsInvalidStudentIsNotAdmittedIfMandatoryFieldsAreMissing
should_기대결과_When_테스트상태
이러한 형태의 네이밍은 많은 사람들이 테스트에 대해 쉽게 이해할 수 있기 때문에 많이 사용된다.
하지만, 긴 이름인 should와 when이 중복해서 사용된다.
예시
should_ThrowException_When_AgeLessThan18should_FailToWithdrawMoney_ForInvalidAccountshould_FailToAdmit_IfMandatoryFieldsAreMissing
when_테스트상태_Expect_기대결과
위와 같다. 상황에 따라 적절하게 선택하면 된다.
긴 이름인 when과 expect가 중복해서 사용된다.
예시
When_AgeLessThan18_Expect_isAdultAsFalseWhen_InvalidAccount_Expect_WithdrawMoneyToFailWhen_MandatoryFieldsAreMissing_Expect_StudentAdmissionToFail
given_사전조건_When_테스트상태_Expect_기대결과
행동 주도 개발(BDD)의 일부로 개발된 네이밍 컨벤션에 기초한다. 이 아이디어는 테스트를 세개의 파트로 나누어 전제 조건, 테스트 상태, 기대 결과가 위 형식대로 네이밍되는 형태이다.
하지만, 긴 이름인 given, when, then을 중복해서 사용된다.
예시
Given_UserIsAuthenticated_When_InvalidAccountNumberIsUsedToWithdrawMoney_Then_TransactionsWillFail
Reference
Unit Test Naming Conventions
Test naming is important for teams on long term project as any other code style conventions. By applying code convention in tests you…
medium.com
'Spring' 카테고리의 다른 글
| Spring 환경별 profile 분리 (0) | 2022.11.17 |
|---|---|
| JPA 사용해보기 (0) | 2022.11.15 |
| Tomcat과 Spring의 상호작용 (0) | 2022.11.15 |
| RequestParam으로 List 형식 받기 (0) | 2022.07.07 |
| @Primary, @Qualifier (0) | 2022.04.29 |
