-
👀 Unit Test 네이밍 컨벤션☕️ java 2023. 10. 24. 15:31
테스트 코드를 작성하는 도중 테스트 메서드의 네이밍을 어떤식으로 해야 보기 좋고 직관적일지 고민하게 되었다.
- 자주 사용되는 자바 테스트 네이밍을 찾아서 그 중 하나를 사용하고자 한다.
💡네이밍을 하는 몇 가지 추천 방법
- 테스트명은 특정한 필요조건을 명시한다.
- 테스트명에는 기대되는 Input이나 상태, 그에 상응하는 결과값을 포함할 수 있다.
- 테스트명은 워크플로우와 아웃풋을 명시하는 선언이나 사실들로 나타내야 한다.
- 테스트명에는 테스트 메서드나 클래스의 이름을 포함할 수 있다.
🧩 네이밍 예시
📕 메서드명_테스트하고자하는상태_예상되는결과
- ex) isAdult_AgeLessthan18_False
- 단점: 메서드 이름이 바뀌면 테스트명을 변경해주어야 한다.
📕 메서드명_예상되는결과_테스트하고자하는상태
- ex) isAdult_False_AgeLessthan18
- 단점: 메서드 이름이 바뀌면 테스트명을 변경해주어야 한다.
📕 test테스트진행중인기능명
- ex) testIsNotAnAdultIfAgeLessThan18
- 단점: “test” prefix가 중복된다.
📕 테스트중인기능명
- ex) isNotAnAdultIfAgeLessThan18
- 단점: 이름만으로 어떤 결과가 나오는지 유추하기 어렵다.
📕 Should_예상되는결과_When_테스트중인상태
- ex) Should_ThrowException_When_AgeLessThan18
- 단점: ‘should’와 ‘when’이 중복되고 이름이 길어진다.
📕 When_테스트중인상태_Expect_예상되는결과
- ex) When_AgeLessThan18_Expect_isAdultAsFalse
- 단점: ‘when’와 ‘expect’가 중복된다.
📕 Given_조건_When_테스트중인상태_Then_예상되는결과
- ex) Given_UserIsAuthenticated_When_InvalidAccountNumberIsUsedToWithdrawMoney_Then_TransactionsWillFail
- 단점: ‘given’, ‘should’, ‘when’가 중복되고 이름이 매우 길어진다.
📖 참고자료
'☕️ java' 카테고리의 다른 글
🆚 AssertJ과 JUnit 의 Assertions 비교 (1) 2023.10.25 @ParameterizedTest (0) 2023.10.25 일급 컬렉션 (1) 2023.10.24 🧪 JMH (Java Microbenchmark Harness) (1) 2023.10.23 🆚 Random 함수 비교 (0) 2023.10.23