본문 바로가기

이론정리

JUnit이란

정의

JUnit(제이유닛)은 자바 프로그래밍 언어 유닛 테스트 프레임워크이다. JUnit은 테스트 주도 개발 면에서 중요하며 SUnit과 함께 시작된 XUnit이라는 이름의 유닛 테스트 프레임워크 계열의 하나이다.

JUnit은 컴파일 타임에 JAR로서 링크된다. 프레임워크는 JUnit 3.8 이하의 경우 junit.framework 패키지 밑에 상주하며, JUnit 4 이상의 경우 org.junit 패키지 밑에 상주한다.(ko.wikipedia.org/wiki/JUnit)

 

사용법

eclipse에서 proect 우크릭 → Build Path →Configuration Build Path...  Laibraries탭 → Add Laibrary  JUnit클릭

 

테스트가 필요한 메소드에 @Test 어노테이션을 통해 어노테이트 한다. (import org.junit.Test)

테스트할 클래스 파일 우클릭 Run as → JUnit 클릭 하면 JUnit 테스트가 진행된다. 성공시 녹색, 실패시 빨간색 불이 들어온다.

 

JUnit 어노테이션 종류

@After: public void 메서드에 주석을 추가하면 해당 메서드가 Test 메서드 이후에 실행됩니다. 모든 @After 메서드는 Before 또는 Test 메서드가 예외를 throw하더라도 실행되도록 보장됩니다. 슈퍼 클래스에서 선언 된 @After 메서드는 현재 클래스에서 재정의되지 않는 한 현재 클래스의 메서드 다음에 실행됩니다.

 

@AfterClass: public static void 메서드에 주석을 달면 클래스의 모든 Test 메서드가 실행 된 후에 해당 메서드가 실행됩니다. 모든 @AfterClass 메서드는 BeforeClass 메서드가 예외를 throw하더라도 실행이 보장됩니다. 슈퍼 클래스에서 선언 된 @AfterClass 메서드는 현재 클래스에서 섀도잉 되지 않는 한 현재 클래스의 메서드 다음에 실행됩니다.

 

@Before: public void 메서드에 주석을 추가하면 해당 메서드가 Test 메서드보다 먼저 실행됩니다. 슈퍼 클래스의 @Before 메서드는 현재 클래스에서 재정의되지 않는 한 현재 클래스의 메서드보다 먼저 실행됩니다. 다른 순서는 정의되어 있지 않습니다.

 

@BeforeClass: public static void no-arg 메서드에 주석을 추가하면 클래스의 모든 Test 메서드보다 먼저 실행됩니다. 슈퍼 클래스의 @BeforeClass 메소드는 현재 클래스에서 섀도잉 되지 않는 한 현재 클래스의 메소드보다 먼저 실행됩니다.

 

@ClassRule: junit.org/junit4/javadoc/latest/index.html 무슨 말인지 모르겠다..

 

@FixMethodOrder: 테스트 클래스 내에서 메서드 실행 순서를 선택할 수 있습니다.

 

@Ignore: 메소드에 이 어노테이션을 사용할 경우 테스트로 실행되지 않습니다. 또한 클래스에 사용할 경우 포함된 테스트가 실행되지 않습니다.

 

@Rule: TestRule에 전달 된 Statement는 Before 메서드, Test 메서드, 마지막으로 After 메서드를 실행하여 실패 할 경우 예외를 발생시킵니다. 클래스에 Rule 어노테이션이 여러개 있을 경우 메서드 순서대로 적용되고 그 후 필드 순서대로 적용 됩니다. 여러 필드 (또는 메서드)가있는 경우 일반적으로 정의되지 않은 리플렉션 API의 JVM 구현에 따라 달라지는 순서로 적용됩니다. 필드에 의해 정의 된 규칙은 항상 메서드에 의해 정의 된 규칙 이후에 적용됩니다. 즉, 전자가 반환 한 문은 후자가 반환 한 문을 중심으로 실행됩니다.

 

@Test: Test 어노테이션은 JUnit에 첨부 된 public void 메소드가 테스트 케이스로 실행될 수 있음을 알려줍니다. 메소드를 실행하기 위해 JUnit은 먼저 클래스의 새로운 인스턴스를 생성 한 다음 주석이 달린 메소드를 호출합니다. 테스트에서 발생한 모든 예외는 JUnit에서 실패로보고됩니다. 예외가 발생하지 않으면 테스트가 성공한 것으로 간주됩니다.

 

참고

junit.org/junit4/javadoc/latest/index.html

 

JUnit API

 

junit.org

'이론정리' 카테고리의 다른 글

web.xml, root-context.xml, servlet-context.xml 이란?  (0) 2020.11.15
Mapper란?  (0) 2020.11.15
pom.xml(Project Option Model)이란  (0) 2020.11.15