TDD

JUnit

JUnit은 Java 테스트 프레임워크로 Spring의 최신버전에는 JUnit4가 포함될 정도로 많이 사용하는 테스트 도구입니다.

일반적으로 Hamcrest 라이브러리와 함께 사용되어 더욱 명확한 테스트 의미전달을 합니다.


JUnit 기본 제공 기능

  1. 테스트 결과가 예상과 같은지 판별하는 단정문(assertions)
  2. 공용으로 사용가능한 테스트 픽스쳐(test fixture)
  3. 테스트 러너(test runner)


1. 단정문(assertions)

assert를 prefix로 사용하는 메소드로 테스트 가독성을 높이고, 테스트 케이스의 수행결과를 판별합니다.


Hamcrest 라이브러리를 사용하여 더욱 자연어에 가까운 가독성 좋은 테스트를 작성할 수 있습니다.
Hamcrest 1.3 기준 API doc : http://hamcrest.org/JavaHamcrest/javadoc/1.3/


2. 테스트 픽스쳐(test fixture)

일관된 테스트 실행환경을 위해 전처리나 후처리를 하는 메소드를 말합니다.
이러한 메소드를 테스트 픽스쳐 메소드라고 합니다.

 annotation

 설명

 @Before

테스트 메서드 시작 전 실행 

 @After

테스트 메서드 종료 후 실행 

 @BeforeClass

테스트 클래스 시작 전 실행

 @AfterClass

테스트 클래스 종료 후 실행 


Class가 붙은 어노테이션을 메소드에 mark하면 해당 메소드는 테스트 클래스가 시작되거나 종료될때 한번만 실행됩니다.

없는 어노테이션은 각각의 테스트 메소드가 실행시마다 실행됩니다.


예제링크 :  https://github.com/junit-team/junit4/wiki/test-fixtures



3. 테스트 러너(test runner)

테스트 메소드 실행을 담당하고 있는 클래스를 테스트 러너라고 합니다.
@RunWith 어노테이션으로 클래스를 설정할 수 있으며, 스프링 프레임워크에서는 SpringJUnit4ClassRunner 와 같은 클래스를 제공합니다.
@RunWith(SpringJUnit4ClassRunner.class)와 같이 설정하면 @Repeat, @ProfileValueSourceConfiguration, @IfProfileValue 등의 스프링이 제공하는 추가적인 테스트 기능을 사용할 수 있습니다.

4. 룰(Rule)

테스트 클래스 내에서 각 테스트 메소드의 동작방식을 재정의하거나 추가하기 위해 사용합니다.


현재는 JUnit5가 나와있고 굉장히 많은 변화가 있다고 합니다.
이왕 공부할꺼 최신버전이 가장 좋겠으나, legacy를 무시할 수는 없다고 생각합니다.
빠른 학습을 위해(현재 학습하고 있는 책이 토비의 스프링이라..) 책의 예제를 따라가다보니 JUnit4를 기준으로 공부하게 되었습니다.


'TDD' 카테고리의 다른 글

TDD 개요  (0) 2019.01.28