2013년 8월 8일 목요일

JUnit 개요 및 메소드 소개

JUnit
Eric GammaKent Beck1997년에 만들었다.
자바 프로그래밍 시 Unit테스트를 쉽게 해주는 프레임워크이다.

JUnit 테스트 코드를 수행하는 일반적인 방법
1. 이클립스 같은 IDE를 사용하여 수행
2. 텍스트 기반 커맨드 명령어를 사용하여 수행
3. Swing 기반 테스트 수행 프로그램을 사용하여 수행 (4.x 버젼부터 지원 안함)
4. Ant를 이용하여 수행
xUnit 이란?  어떤 언어를 막론하고, 단위 테스트를 하는데 도움을 주는 프레임워크를
  통틀어서 xUnit 혹은 xUnit 테스트 자동화 프레임워크라고 부른다.
단위 테스트(Unit Test)?    프로그래밍 소스 코드의 특정 모듈이 의도대로
    정확히 작동되는지 검증하는 절차이다.

JUnit 개념
Unit 개념
역할
Assert
테스트하려는 조건을 명시한다.
Assert()는 조건이 만족되면 그냥 지나가고, 만족되지 못하면 예외를 던진다
Test
@Test Annotation이 부여된 메소드로, 하나의 테스트를 뜻한다.
JUnit은 먼저 메소드를 포함하는 클래스의 인스턴스를 만들고, 주석 처리메소드를 찾아 호출한다
Test 클래스
@Test 메소드를 포함한 클래스이다
Suite
여러 테스트 클래스를 하나로 묶는 수단을 제공한다
Runner
테스트를 실행시킨다.
JUnit 4는 하위 호환성을 가지므로 JUnit 3의 테스트도 실행할 수 있다

assertXxx 메소드
assertXxx 메소드
사용목적
assrtArrayEqual("message", A, B)
배열 A B가 일치함을 확인한다.
assertEquals("message", A, B)
객체 A B가 일치함을 확인한다. B파라미터로 A equals()를 호출한다.
assertSame("message", A, B)
객체 A B가 같은 객체임을 확인한다. ( ==연산자사용 )
assertTrue("message", A)
조건 A가 참(true)임을 확인한다.
assertNotNull("message", A)
객체 A null이 아님을 확인한다.

테스트의 준비와 실행 그리고 정리
setUp()
테스트 대상 클래스의 메소드 구조와 상관 없이 테스트 메소드가 실행되기 전에 수행된다.
코드 내에서 사용할 리소스를 초기화 할 때 이용한다.
(테스트 대상 클래스의 객체 생성, 네트워크 연결 시작, DB 연결)
testXXX()
XXX는 테스트 대상 클래스의 메소드 이름이다.
모든 테스트 대상 메소드 이름은 test로 시작해야 한다.
메소드의 내에 assertXXX()를 이용하여 테스트 결과를 확인하는 작업을 수행한다.
tearDown()
메소드는 각각의 테스트 메소드들이 실행되고 난 다음에 호출된다.
사용한 리소스를 정리할 때 이용한다.
(테스트 대상 클래스의 객체를 제거, 네트워크 연결 종료, DB 연결 종료)

테스트의 준비와 실행 그리고 정리 주석기반 방법
메소드에 부여되는 Annotation (해당 메소드가 반드시 public이어야 한다)
@Before 
  - Annotation이 부여된 메소드는 @Test 메소드가 호출되기 직전에 실행된다.
@Test 
  - 실제 테스트를 할 대상 메소드에 작성한다.
@After 
  - Annotation이 부여된 메소드는 @Test 메소드 호출 후에 실행된다.
@Ignore
  - 해당 메소드를 실행하지 않도록 한다.
원한다면 여러 개의 @Before @After method를 정의할 수도 있지만, 이들 사이의 실행 순서를 정하는 방법은 없다.  
메소드에 부여되는 클래스 대상 Annotation (해당 메소드가 반드시 public이고 static이어야 한다.)
@BeforeClass
  - 클래스 안에 정의된 모든 @Test method들이 수행하기 한번만 호출
@AfterClass
  - 클래스 안에 정의된 모든 @Test method들이 수행된 후 한번만 수행




댓글 없음:

댓글 쓰기