우아한 테크코스/테크코스

[Java] 단위 테스트 명명규칙

jamie. 2020. 3. 16. 21:13
반응형

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

 

출처 : https://dzone.com/articles/7-popular-unit-test-naming

반응형