JUnit
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
Table of Contents
JUnit #
테스트란? #
- 어떤 개발된 코드가 올바르게 작동하는 지 확인하는 코드.
- 픽스쳐(fixture):테스트를 수행하는 데 필요한 정보나 오브젝트.
웹을 통한 테스트의 단점 #
- 복잡하다.
- 어디에서 문제가 발생했는지를 찾아내야 한다.
- 테스트의 범위가 넓기 때문에 다른 계층까지 모두 테스트에 영향을 준다.
테스트의 조건 #
- 아주 작은 부분을 대상으로 해야 한다. - 단위테스트(Unit test)
- 모든 테스트 메소드는 독립적이어야 한다.(테스트 메소드의 실행 순서가 그 테스트의 성공 실패를 가늠해서는 안된다.)
- 테스트 메소드는 코드가 바뀌지 않는 이상 항상 같은 결과를 내어놓아야 한다.
테스트 주도개발(Test Driven Development) 또는 테스트 우선 개발(Test First Development) #
- 테스트를 먼저 만들고 그 테스트를 통과할 수 있도록 코드를 작성하는 방법.
- 이 때 테스트는 '기능정의서'와 같은 역할을 할 수 있다.
테스트 주도 개발의 장점 #
- 테스트를 미리 만들어두었기 때문에 개발한 코드가 올바른 지 확인하는 것이 굉장히 간편하다.
- 코드에 대한 피드백을 빠르게 받을 수 있다.
JUnit 사용법 #
테스트 메소드 생성 #
- public void functionName() 메소드를 만든다.
- @Test 어노테이션을 해당 함수에 붙인다.
-
테스트 메소드 골격
@Test public void testName(){ // test content }
-
테스트 실행 전 환경 구성 #
-
@Before 어노테이션을 환경을 구성하는 함수에 붙인다.
@Before public void setUp(){ //To do before test }
테스트 실행 후 정리 #
-
@After 어노테이션을 정리하는 함수에 붙인다.
@After public void endOfTest(){ // To do after test }
- @Before 나 @After 메소드는 직접 호출하는 것이 아니므로 주고받을 정보가 있다면 멤버 변수로 공유할 것
JUnit Assertions #
- assertEquals([message], expected, actual) - 두 값이 같은 지 비교
- assertSame([message], expected, actual), assertNotSame([messgae], expected, actual) - 두 객체가 동일한 객체인지 비교
- assertTrue([message], expected), assertFalse([message], expected) - 참/거짓 판별
- assertNull([messgae], expected), assertNotNull([message], expected) - null 여부 판단
- fail([message]) - 테스트 실패로 판단
- import static org.junit.Assert.*; 으로 static import 하여 쉽게 사용할 수 있음.
JUnit4 어노테이션 #
- @BeforeClass : 테스트 클래스 내에서 수행 전 한 번만 실행, static method 여야 함
- @AfterClass : 테스트 클래스 내에서 수행 후 한 번만 실행, static method 여야 함
- @Before : 테스트 케이스 수행 전 반복실행
- @After : 테스트 케이스 수행 후 반복실행
-
@Test : 테스트 메소드 지정
import org.junit.*; public class Junit4Test { @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("@BeforeClass"); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("@AfterClass"); } @Before public void setUp() throws Exception { System.out.println("@Before"); } @After public void tearDown() throws Exception { System.out.println("@After"); } @Test public void testCase1() throws Exception { System.out.println("testCase1"); } @Test public void testCase2() throws Exception { System.out.println("testCase2"); } } import org.junit.Ignore; import org.junit.Test; import static org.junit.Assert.*; public class Junit4Exam { // 예외 테스트 @Test(expected = NumberFormatException.class) public void testException() throws Exception { String str = "hello"; System.out.println(Integer.parseInt(str)); } // 테스트 시간 제한 @Test(timeout = 1000) public void testTimeout() throws Exception { long sum = 0; for (int i = 0; i < 10000; i++) { for (int j = 0; j < 10000; j++) { sum += j; } } System.out.println(sum); } // 테스트 무시 @Ignore @Test public void testIgnore() throws Exception { assertTrue(false); } // 배열 지원 - 값이랑 순서까지 동일해야 함 @Test public void testAssertArrayEquals() throws Exception { Object[] a = {"Java", "Python", 1}; Object[] b = {"Java", "Python", 1}; assertArrayEquals(a, b); } }
Incoming Links #
Related Data Sciences (DataScience 0) #
Suggested Pages #
- 0.926 린 소프트웨어 개발방법론
- 0.066 Django Test Driven Development with Docker
- 0.009 애자일 모델
- More suggestions...