티스토리 뷰

Spring/테스트

유닛 테스트 코드 네이밍 컨벤션

기억용블로그 2022. 6. 18. 09:27
728x90

유닛 테스트 네이밍 컨벤션

테스트 네이밍 컨벤션을 따르는 것은 다른 코드 작성시의 컨벤션을 따르는 것만큼이나 장기적인 프로젝트를 진행하는데 중요하다. 널리 알려진 네이밍 컨벤션을 테스트에 적용함으로써 테스트의 이름만으로 어떤 테스트인지 이해할 수 있게 한다.

 

적절한 이름을 짓는 것은 어떠한 시도 적절히 번역할 수 없다는 점에서 시와 같다. ~W.H. Auden

 

네이밍 컨벤션을 선정하기 이전에 그 테스트가 왜 필요한지 테스트의 목적은 무엇인지 먼저 생각해보아야 한다.

테스트 네이밍을 하는데 다음과 같은 몇 가지 추천 방법이 있다.

 

  • 테스트명은 특정한 필요조건을 명시해야 한다.
  • 테스트명에는 기대되는 인풋이나 상태와 그에 상응하는 결과값을 포함시킬 수 있다.
  • 테스트명은 워크플로우와 아웃풋을 명시하는 선언이나 사실들로 나타내야 한다.
  • 테스트명에는 테스트 메서드나 클래스의 이름을 포함할 수 있다.

테스트 네이밍 컨벤션에 대한 몇 가지 예시.

 

 

메서드명_테스트하고자하는상태_예상되는결과

단점: 메서드 이름이 바뀌면 테스트명을 변경해주어야 함.

예시: isAdult_AgeLessThan18_False

 

메서드명_예상되는결과_테스트하고자하는상태

cons: 메서드 이름이 바뀌면 테스트명을 변경해주어야 함.

example: isAdult_False_AgeLessThan18

 

test테스트진행중인기능명

cons: “test” prefix가 중복된다

example: testIsNotAnAdultIfAgeLessThan18

 

테스트중인기능명

cons: 이름만으로는 어떤 결과를 원하는지 유추할 수 없다.

example: IsNotAnAdultIfAgeLessThan18

 

Should_예상되는결과_When_테스트중인상태

cons: `should`와 `when`가 중복되고 이름이 길어진다.

example: Should_ThrowException_When_AgeLessThan18

 

When_테스트중인상태_Expect_예상되는결과

cons: `when`와 `expect`가 중복됨

example: When_AgeLessThan18_Expect_isAdultAsFalse

 

Given_조건_When_테스트중인상태_Then_예상되는결과 — Behavior-Driven Development (BDD)

cons: `given`, `should`, `when`가 중복되고 이름이 매우 길어진다. 

example: Given_UserIsAuthenticated_When_InvalidAccountNumberIsUsedToWithdrawMoney_Then_TransactionsWillFail

 

이외에도 수많은 컨벤션이 있지만 테스트 네이밍 컨벤션을 따르는 것은 일단 아무거나 선택해서 테스트를 진행하는 것보다 중요하진 않다.

 

레퍼런스

https://medium.com/@stefanovskyi/unit-test-naming-conventions-dd9208eadbea

 

Unit Test Naming Conventions

Test naming is important for teams on long term project as any other code style conventions. By applying code convention in tests you…

medium.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함