Yeji's Tech Notes
article thumbnail
반응형

개요

단위 테스트 작성 중 의미있는 Naming Convention에 관해 고민하다 7Popular Unit Test Naming Conventions 글을 보며 정리한 글입니다.  그 외에도 단위테스트 활용방법 글을 읽으면 단위 테스트 작성 시 도움이 될 것 같습니다.

 

 

의미있는 Naming Convention

메서드명_테스트상태_기대결과

예시) 성인인증 시 18세 이하일 경우 False 

void isAdult_AgeLessThan18_False() {}

 

만약 메소드 이름이 코드 리팩터링의 일부로 변경된다면, 이와 같이 테스트 이름도 변경되어야 하고, 그렇지 않으면 다음과 같이 변경되기가 어려워집니다

 

메서드명_기대결과_테스트상태

ex)  성인인증 시 18세 이하일 경우 False 

void isAdult_False_AgeLessThan18(){}

위에서 약간 조정된 Naming Convention이지만 해당 기법을 권장합니다. 이 기법은 메서드 이름이 변경되면 나중에 이해하기 어렵다는 단점도 있습니다.

 

test[테스트 할 기능]

ex)  성인인증 시 18세 이하일 경우 False 

void testIsNotAnAdultIfAgeLessThan18(){}

테스트 할 기능이 테스트 이름의 일부로 작성되므로 테스트를 쉽게 읽을 수 있습니다. 그러나 "test" 접두사가 중복된다는 주장이 있지만, 일부 개발자는 해당 명명규칙을 사용합니다.

 

테스트 할 기능

ex)  성인인증 시 18세 이하일 경우 False 

void IsNotAnAdultIfAgeLessThan18(){}

많은 사람들이 테스트 방법으로 식별하기 위해 주석을 사용하기 때문에 테스트할 형상을 단순히 작성하는 것이 낫다고 생각해 해당 명명규칙을 사용합니다. 또한 문서화 대체 형식으로 수행하고 code smell을 방지하기 위해 권장하는 명명규칙입니다.

 

Should_기대결과_When_테스트상태

ex)  성인인증 시 18세 이하일 경우 False 

void Should_ThrowException_When_AgeLessThan18(){}

해당 명명규칙은 읽기 쉽기 때문에 많이 사용합니다.

 

When_테스트상태_Expect_기대결과

ex)  성인인증 시 18세 이하일 경우 False 

void When_AgeLessThan18_Expect_isAdultAsFalse(){}

 

Given_사전조건_When_테스트상태_Then_기대결과

ex)  성인인증 시 18세 이하일 경우 False 

void Given_User_When_AgeLessThan18Test_Then_isAdultFalse(){}

해당 명명규칙은 행동주도개발(BDD)의 일부로 개발된 명명 규칙을 기반으로 합니다. 

전제 조건, 테스트 대상 상태 및 예상 행동을 제시할 수 있도록 합니다.

반응형
profile

Yeji's Tech Notes

@Jop

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!