barded
[무물] 4. 단위 테스트 네이밍 컨벤션 본문
https://dzone.com/articles/7-popular-unit-test-naming 에 따르면 7가지를 추천한다.
- 메서드명_테스트상태_기대결과
- 이 전략에 대한 반대 의견은 메소드 이름이 코드 리팩토링의 일환으로 변경되면 테스트 이름도 변경되어야 하거나 나중에 이해하기 어려워질 수 있다는 점입니다. 다음은 몇 가지 예입니다:
- 예시
- isAdult_AgeLessThan18_False
- withdrawMoney_InvalidAccount_ExceptionThrown
- admitStudent_MissingMandatoryFields_FailToAdmit
- 메소드명_기대결과_테스트상태
- 위의 방식에서 약간 변형된 방법으로, 일부 개발자들은 이 명명 방식을 추천합니다. 이 방식도 메소드 이름이 변경되면 나중에 이해하기 어려워질 수 있다는 단점이 있습니다.
- 예시
- isAdult_False_AgeLessThan18
- withdrawMoney_ThrowsException_IfAccountIsInvalid
- admitStudent_FailToAdmit_IfMandatoryFieldsAreMissing
- test[테스트할 기능]
- 이 방식은 테스트할 기능이 테스트 이름에 포함되어 있어 읽기 쉽습니다. "test" 접두사가 불필요하다는 주장이 있지만, 일부 개발자들은 이 방식을 선호합니다. 다음은 이 방식으로 이름을 지었을 때의 예입니다:
- 예시
- testIsNotAnAdultIfAgeLessThan18
- testFailToWithdrawMoneyIfAccountIsInvalid
- testStudentIsNotAdmittedIfMandatoryFieldsAreMissing
- 테스트할 기능
- 기능을 테스트하는 부분만 작성하는 것이 더 좋다고 제안하는 사람들도 많습니다. 어차피 메소드를 테스트 메소드로 식별하기 위해 주석을 사용하기 때문입니다. 이 방식은 유닛 테스트를 대체 문서 형태로 사용하고 코드 냄새를 피할 수 있다는 이유로 추천됩니다.
- 예시
- IsNotAnAdultIfAgeLessThan18
- FailToWithdrawMoneyIfAccountIsInvalid
- StudentIsNotAdmittedIfMandatoryFieldsAreMissing
- should_기대결과_When_테스트상태
- 이 방식도 많은 사람들이 사용하며, 테스트를 읽기 쉽게 만듭니다.
- 예시
- should_ThrowException_When_AgeLessThan18
- should_FailToWithdrawMoney_ForInvalidAccount
- should_FailToAdmit_IfMandatoryFieldsAreMissing
- when_테스트상태_Expect_기대결과
- 예시
- When_AgeLessThan18_Expect_isAdultAsFalse
- When_InvalidAccount_Expect_WithdrawMoneyToFail
- When_MandatoryFieldsAreMissing_Expect_StudentAdmissionToFail
- 예시
- given_사전조건_When_테스트상태_Expect_기대결과
- 이 접근 방식은 행위 주도 개발(BDD)의 명명 규칙을 기반으로 합니다. 테스트를 전제 조건, 테스트 상태, 기대되는 동작의 세 부분으로 나누어 위의 형식으로 작성하는 것입니다.
- 예시
- Given_UserIsAuthenticated_When_InvalidAccountNumberIsUsedToWithdrawMoney_Then_TransactionsWillFail
[무물] 2-1.계층별 단위테스트 - Repository
[무물] 2-3. 계층별 단위테스트 - Controller
[무물] 3-1. 통합테스트 MockMvc vs. WebTestClient vs. TestRestTemplate
'프로젝트 > 무물' 카테고리의 다른 글
[무물] 3-2. 통합테스트 (0) | 2024.06.06 |
---|---|
[무물] 3-1. 통합테스트 MockMvc vs. WebTestClient vs. TestRestTemplate (0) | 2024.06.06 |
[무물] 2-3. 계층별 단위테스트 - Controller (0) | 2024.06.06 |
[무물] 2-2. 계층별 단위테스트 - Service (0) | 2024.06.06 |
[무물] 2-1.계층별 단위테스트 - Repository (0) | 2024.06.06 |