정보공간_1

[4기 강북 송용길] Unit test with JUnit(2) 본문

IT 놀이터/Elite Member Tech & Talk

[4기 강북 송용길] Unit test with JUnit(2)

알 수 없는 사용자 2013. 11. 28. 18:15

안녕하세요. 강북멤버십 22-1기 송용길입니다.

 지난 포스팅에선 단위 테스트의 당위성과 함께 왜 개발자가 직접 단위 테스트를 진행해야 하는 지에 대해 논하였습니다. 이번 포스팅에서는 간단한 예제와 함께 직접 첫번 째 단위 테스트 코드를 작성해 보도록 하겠습니다.

 우선 테스트를 진행해볼 간단한 Java class 예제를 들어보겠습니다.

 배열로 들어온 숫자들의 평균을 내어 반환해 주는 Average클래스 입니다. 굉장히 간단하죠. 너무 간단한 나머지 무얼 테스트해야하나 싶을 정도입니다. 하지만 이 클래스의 aver 메소드가 내가 원하는 값을 제대로 반환하고 있는지에 대한 테스트가 필요합니다. 그럼 테스트 코드를 몇 줄 짜보도록 하겠습니다.

 위와 같이 Average class를 테스트하는 AverageTest 클래스를 만들어 보았습니다. 보통 단위 테스트를 진행할 클래스의 이름은 테스트할 클래스의 이름 뒤에 test를 붙여 단위 테스트를 진행하는 클래스라고 명시하여 줍니다. Average 클래스의 aver 메소드를 테스트하기 위해 testAver()라는 테스트 메소드를 작성하였습니다. Average 클래스의 메소드는 aver 하나 뿐이었지만 클래스에 테스트할 메소드가 많아질 수록 테스트 메소드의 모듈화가 필수적이므로 단위 테스트 하나당 메소드 하나씩으로 모듈화 하였습니다. 테스트 메소드의 네이밍은 테스트하고자하는 메소드의 앞에 test를 붙여 테스트 메소드라는 것을 명시합니다.

 aver 메소드에 테스트하고자 하는 값을 인자로 넘겨주고 그로 반환되는 값을 actual 변수에 저장 후 actual 변수가 기대한 값(5.5)와 같지 않을 경우 예외처리를 하였습니다. 위의 코드가 정상적으로 작동할 경우 아무런 출력이 나오지 않을 것입니다. 허나 기대하지 않던 값이 반환될 경우엔 아래와 같은 메세지가 출력이 될 것입니다.

자 이렇게 간단한 예제를 들어 단위 테스트를 진행하여 보았습니다. testAver 메소드를 보시면 아시겠지만 하나의 메소드를 검증하는 것은 그다지 어렵지 않습니다. 아니 어려워서는 안됩니다. 첫 포스팅에서 말씀 드렸다시피 단위 테스트는 쉽게 시간이 많이 들지 않게끔 진행되어야 합니다. 그래야만 개발자의 삶을 풍요롭게 해준다는 말이 거짓이 아니게 될 것입니다. 다음 포스팅에선 직접 JUnit framework를 이용하여 단위 테스트를 진행해 보도록 하겠습니다.



Reference

[1] JUnit in action : 단위 테스트의 모든 것 / 펠리페 레미. 인사이트, 2011