JUnit 이란?
자바 프로그램의 단위 테스트 프레임워크
- 어노테이션으로 쉽고 간결한 테스트 코드
- 테스트를 위해 코드에 출력문을 삽입할 필요 없음
예시
- src/main/java(kr.se) 폴더에서 Calc 클래스 생성 -> File -> New -> Class 선택
package kr.se;
public class Calc { //Calc.java
private int res=0;
public void add(int x, int y) { res=x+y; }
public void sub(int x, int y) { res=x-y; }
public int getResult( ) { return res; }
}
- src/test/java(kr.se) 폴더에서 CalcTest 클래스 생성 -> Flie -> New -> JUnit Test Case 선택
package kr.se;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.After;
public class CalcTest {
private Calc calc;
@Before
public void setUp( ) throws Exception // 1. Arrange(준비), fixture
{ calc = new Calc( ); }
@Test
public void testAdd( ) throws Exception // 2. Act(동작) & Assert(확인)
{ calc.add(20, 10); assertEquals(30, calc.getResult( )); }
@Test
public void testSub( ) throws Exception // 3 Act(동작) & Assert(확인)
{ calc.sub(20, 10); assertEquals(10, calc.getResult( )); }
@After
public void tearDown( ) { } // 4. Teardown(해체 종료)
}
동일 패키지
- 동일 패키지에 애플리케이션 코드와 테스트 코드 생성
- public 메소드 뿐만 아니라 protected 메소드도 테스트 가능
- 애플리케이션, 테스트 코드가 생성된 폴더는 다름 (/src/main, /src/test)
- 애플리케이션 코드를 분리하여 배포하기 용이
테스트 코드 실행
- Run As -> JUnit Test
- Failure: 테스트 코드의 단정문이 실패했을 때 발생
- Error: 테스트 코드를 실행할 때 전혀 예기치 않은 곳에서 예외가 발생했을 때 발생 ex) ArithmeticException (divided by 0)
- 강제적인 예외 발생 여부에 대한 테스트
-
@Test(expected=InvalidArgumentException.class)
-
- 입출력에 대한 인자화된 테스트
- 테스트에서 여러 조건 및 결과(객체/배열 컬렉션) 적용
-
@RunWith(Parameterized.class), @Parameter
- 여러 테스트 클래스의 테스트 메소드 한 번에 실행
- 스위트 클래스 생성(New > JUnit Test Suite)
-
@RunWith(Suite.class), @SuiteClasses
- 특정 범주의 테스트만 수행
- 범주별로 테스트 메소드 분류 (범주화)
-
@RunWith(Categories.class), @Category
'CS' 카테고리의 다른 글
[컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식 (0) | 2024.03.12 |
---|---|
[소프트웨어 공학] 블랙박스 테스트-1 (0) | 2022.11.07 |
[소프트웨어 공학] 소프트웨어 테스트 - 2 (0) | 2022.10.03 |
[소프트웨어공학] 소프트웨어 테스트 - 1 (0) | 2022.10.03 |
[소프트웨어 공학] 디자인 패턴 Design Pattern (0) | 2022.09.26 |