ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 👀 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’가 중복되고 이름이 매우 길어진다.

     

    📖 참고자료

    Unit Test Naming Conventions

    '☕️ 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

    댓글

Designed by Tistory.