본문
JUnit
# JUnit
JUnit은 단위 테스트 도구입니다. 외부 테스트 프로그램(케이스)을 작성하여 System.out으로 번거롭게 디버깅하지 않아도 됩니다. 프로그램 테스트 시 걸릴 시간도 관리할 수 있게 해주며 오픈 소스이며, 플러그인 형태로 Eclipse에 포함되어 있습니다. 하나의 jar 파일이 전부이며 사용법도 간단합니다. 어느 정도 개발이 진행되면 프로그램에 대한 단위 테스트는 반드시 수행해야 합니다. JUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framework 입니다. JDK 1.4에서 추가된 assertXXX를 사용하여 Test를 진행합니다. JUnit은 테스트 결과를 확인하는 것 이외 최적화된 코드를 유추해내는 기능도 제공합니다. 또한, 테스트 결과를 단순한 텍스트로 남기는 것이 아니라 Test클래스로 남깁니다. 그래서 개발자에게 테스트 방법 및 클래스의 History를 넘겨줄 수도 있습니다.
# 특징
- 단위 테스트 Framework 중 하나
- 문자 혹은 GUI 기반으로 실행됨
- 단정문으로 테스트 케이스의 수행 결과를 판별함(assertEquals(예상 값, 실제 값))
- 어노테이션으로 간결하게 지원함
- 결과는 성공(녹색), 실패(붉은색) 중 하나로 표시
# Eclipse에 JUnit 설정하기
- Java Project를 생성
- Project 이름에서 오른쪽 마우스를 클릭하고 Properties를 선택
- Java BuildPath를 선택
- Libraries 탭을 선택하고, Add Library를 선택
JUnit을 선택하고, Next 버튼 선택
버전을 선택하고, Finish 버튼 선택
JUnit이 추가 된 사항을 확인
# JUnit 사용하기
먼저 com.calculator 패키지를 만들고 Calculator 클래스를 만듭니다. 메소드는 int형 두 개의 파라미터를 받아 두 개의 합을 리턴 하는 간단한 sum 메소드 입니다. 소스는 다음과 같습니다.
1 2 3 4 5 6 7 | package com.calculator; public class Calculator { public int sum(int num1, int num2){ return num1 + num2; } } | cs |
Calculator 클래스를 테스트하기 위한 테스트 클래스를 만들겠습니다. 먼저 com. Calculator.test 패키지를 만듭니다.
그리고 com. Calculator.test 패키지에서 마우스 오른쪽 버튼 -> New -> JUnit Test Case 선택
아래 그림에서
①은 테스트 클래스 이름 입력 부분이고, 테스트 클래스 이름은 테스트할 클래스 이름에 Test를 추가해서 입력합니다.
②는 테스트 클래스가 테스트하게 될 클래스를 지정하는 부분입니다.
Next 버튼 선택,
Calculator 클래스에서 테스트할 메소드를 선택하고 Finish 버튼을 선택,
다음과 같은 테스트 코드가 생성됩니다.
1 2 3 4 5 6 7 8 9 | package com.calculator.test; import static org.junit.Assert.*; import org.junit.Test; public class CalculatorTest { @Test public void testSum() { fail("Not yet implemented"); } } | cs |
위 testSum 메소드를 보면 어노테이션으로 @Test가 선언된 것을 볼 수 있습니다. 이 의미는 testSum 메소드가 단위 테스트 메소드임을 지정한다는 것입니다. 그리고 이 testSum 메소드 안에서 Calculator 클래스의 Sum메소드를 테스트합니다.
testSum 메소드를 다음과 같이 수정하였습니다.
1 2 3 4 5 | @Test public void testSum() { Calculator calculator = new Calculator(); assertEquals(30, calculator.sum(10, 20)); } | cs |
1 2 3 4 | @Test public void testSum() { } | cs |
1 2 3 4 | @Test(timeout=5000) public void testSum() { } | cs |
1 2 3 4 | @Test(expected=RuntimeException.class) public void testSum() { } | cs |
1 2 3 4 5 6 7 8 9 | @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } | cs |
1 2 3 4 5 6 7 8 9 | @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } | cs |
댓글