Undergoing

JUnit의 개요 본문

개발/TDD

JUnit의 개요

Halkrine 2012. 6. 7. 10:51

* Reference : JUnit in Action, Second Edition(국내번역판)


JUnit은 자바 프로그래밍 언어로 짜여진 유닛 테스팅 프레임워크로, 테스트 주도 개발(TDD. Test-Driven Development)에서 중요하게 여겨진다. 자동화 테스트를 위한 전용 프레임워크의 필요성을 중히 여긴 에릭 감마와 켄트 벡이 제작하였다.


* Framework : 거의 완성된 애플리케이션. 여러 애플리케이션에서 공유할 수 있는 재활용 가능하고 보편적인 구조를 제공함. 응집성 높은 구조를 제공한다는 점에서, 단순 유틸리티 클래스의 집합인 툴킷과 구분


JUnit은 오픈소스 소프트웨어로, http://www.junit.org 에서 다운로드 받을 수 있다. But Myeclipse를 설치했다면 기본적으로 내장되어 있다. 원래 단위 테스트는 작업의 한 단위의 동작을 검사하는 테스트를 일컫는 말이었으나 시간이 흐르면서 '독립적인 하드웨어나 소프트웨어 단위 혹은 관련 단위들의 집합에 대한 테스트' 로 정의가 확대되었다. 현재 많이 사용되는 JUnit은 3.8 버전과 4버전이 존재하는데, 각각 특징이 있다.


- JUnit 3.8

 . Testcase를 상속받는다.

 . 테스트 메소드의 이름은 반드시 'test'로 시작한다.(Ex. testaddnumber())


- JUnit 4

 . java 5 이상에서 사용할 수 있다.

 . junit.framework.Testcase를 상속하지 않는, 독립된 클래스로 구성된다.

 . org.junit.*와 org.junit.Assert.*를 import한다.

 . 주석을 사용하여 처리한다. 한층 유연해짐


사용 예는 다음과 같다.


CalulatorTest 

import static org.junit.Assert.asserEquals;

import org.junit.Test;


public class CalculatorTest {

@Test

public void testtAdd() {

Calculator calculator = new Calculator();

double result = calculator.add(1,1);

assertEquals(2, result, 0);

}

}


테스트 검증에는 JUnit의 Assert 클래스에 정의된 assert 메서드를 사용한다. assert 메서드는 아래 목록에.


assertXxx 메서드

 사용 목적

 assertArrayEquals("message", A, B)

 배열 A와 B가 일치함을 확인

 assertEquals("message", A, B)

 객체 A와 B가 일치함을 확인. B를 파라미터로 하여 A의 equals() 메서드를 호출함

 assertSame("message", A, B)

 객체 A와 B가 같은 객체임을 확인. 

 assertTrue("message", A)

 조건 A가 참임을 확인

 assertNotNull("message", A) 

 객체 A가 null이 아님을 확인


* assertEquals는 객체의 '값' 을, assertSame은 객체 자체가 일치함을 확인한다.


JUnit의 핵심 객체들은 다음과 같다.


 JUnit 개념

 역할

 Assert

 테스트하려는 조건을 명시. assert 메서드는 조건이 만족되면 겉으로 드러나지 않으나, 만족되지 않으면 예외를 던짐

 Test

 @Test 애노테이션이 부여된 메서드. 하나의 테스트를 뜻함.

 Test Class

 @Test 메서드를 포함한 클래스
 Suite  여러 테스트 클래스를 하나로 묶는 수단을 제공

 Runner

 테스트를 실행시킴.


* TDD 개요에 대한 간단한 이해 : http://blog.naver.com/kimig82?Redirect=Log&logNo=80121320519

* JUnit 설치와 테스트 : http://blog.naver.com/fsclub2307?Redirect=Log&logNo=130134723640

'개발 > TDD' 카테고리의 다른 글

Test Code 작성 규율  (0) 2012.06.27
Controller Component 작성 - 3  (0) 2012.06.11
Controller Component 작성 - 2  (0) 2012.06.11
Controller Component 작성 - 1  (0) 2012.06.11