barded

[무물] 4. 단위 테스트 네이밍 컨벤션 본문

프로젝트/무물

[무물] 4. 단위 테스트 네이밍 컨벤션

barded 2024. 6. 6. 14:44

https://dzone.com/articles/7-popular-unit-test-naming 에 따르면 7가지를 추천한다.

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

[무물] 1. 단위테스트 / 통합 테스트 란?

[무물] 2-1.계층별 단위테스트 - Repository

[무물] 2-2. 계층별 단위테스트 - Service

[무물] 2-3. 계층별 단위테스트 - Controller

[무물] 3-1. 통합테스트  MockMvc vs. WebTestClient vs. TestRestTemplate

[무물] 3-2. 통합테스트

[무물] 4. 단위 테스트 네이밍 컨벤션