[Java] 단위 테스트 명명규칙
1. MethodName_StateUnderTest_ExpectedBehavior
명명
메서드명_테스트상태_기대행위
특징
코드 리팩토링의 일부로 메서드 이름이 변경되면 테스트 이름을 변경해야 함
예시
isAdult_AgeLessThan18_False
- withdrawMoney_InvalidAccount_ExceptionThrown
- admitStudent_MissingMandatoryFields_FailToAdmit
2. MethodName_ExpectedBehavior_StateUnderTest
명명
메서드명_기대행위_테스트상태
특징
첫 번째와 앞/뒤만 다름. 단점은 위와 동일
예시
- isAdult_False_AgeLessThan18
- withdrawMoney_ThrowsException_IfAccountIsInvalid
- admitStudent_FailToAdmit_IfMandatoryFieldsAreMissing
3. test[Feature being tested]
명명
테스트[테스트중인 기능]
특징
테스트할 기능이 테스트 이름의 일부에 들어가므로 파악이 편함
단, test라는 접두어가 중복됨
예시
- testIsNotAnAdultIfAgeLessThan18
- testFailToWithdrawMoneyIfAccountIsInvalid
- testStudentIsNotAdmittedIfMandatoryFieldsAreMissing
4. Feature to be tested
명명
테스트할기능
특징
어노테이션으로 테스트명을 정의한다고 가정하여 간단히 테스트할 기능을 명시, 문서 형태로 단위 테스트를 수행하고, code smells를 방지하는 이유로 권장
문서 형태로 단위 시험을 수행하고 코드 냄새를 방지하는 이유로 권장
예시
- IsNotAnAdultIfAgeLessThan18
- FailToWithdrawMoneyIfAccountIsInvalid
- StudentIsNotAdmittedIfMandatoryFieldsAreMissing
5. Should_ExpectedBehavior_When_StateUnderTest
명명
Should_기대행위_when_테스트상태
특징
테스트를 쉽게 읽을 수 있어서 이용
예시
- Should_ThrowException_When_AgeLessThan18
- Should_FailToWithdrawMoney_ForInvalidAccount
- Should_FailToAdmit_IfMandatoryFieldsAreMissing
6. When_StateUnderTest_Expect_ExpectedBehavior
명명
When_테스트상태_Expect_기대행위
예시
- When_AgeLessThan18_Expect_isAdultAsFalse
- When_InvalidAccount_Expect_WithdrawMoneyToFail
- When_MandatoryFieldsAreMissing_Expect_StudentAdmissionToFail
7. Given_Preconditions_When_StateUnderTest_Then_ExpectedBehavior
명명
Given_사전조건_When_테스트상태_Then_예상동작
특징
BDD (Behavior-Driven Development)의 일부로 개발 된 명명 규칙을 기반
테스트를 세 부분으로 나눠서 사전 조건, 테스트중인 상태 및 예상되는 동작을 위 형식으로 작성
예시
- Given_UserIsAuthenticated_When_InvalidAccountNumberIsUsedToWithdrawMoney_Then_TransactionsWillFail