신규 블로그를 만들었습니다!
JUnit 테스트 방법1
필요한 라이브러리
- junit-4.12.jar
import junit.framework.*;
public class JavaTest extends TestCase {
protected int value1, value2;
protected void setUp() {
value1 = 3;
value2 = 5;
}
public void testAdd(){
double result = value1 + value2;
assertTrue(result == 8);
}
}
JUnit 테스트 방법2 (어노테이션 사용)
필요한 라이브러리
- junit-4.12.jar
- hamcrest-core-1.2.jar
assertEquals()
import org.junit.Test; // Test 어노테이션을 사용하기 위해
import static org.junit.Assert.*; // assert 메소드를 사용하기 위해
public class JavaTest2 {
private int value1, value2;
private void setUp() {
value1 = 5;
value2 = 6;
}
@Test
public void testAdd() {
setUp();
double result = value1 + value2;
assertEquals(12, result, 0); // 기대값, 데이터, 허용오차
}
}
assertTrue( ); 대신에 assertEquals( ); 를 이용하여 할 수도 있다.
만약 원하는 값과 다르게 나오면 아래와 같이 출력된다.
java.lang.AssertionError:
Expected :12.0
Actual :11.0
assertEquals() & assertSame()
import java.util.ArrayList;
import org.junit.Test;
import static org.junit.Assert.*;
public class JavaTest2 {
private ArrayList<Integer> makeTestArray(int start, int end) {
ArrayList<Integer> list = new ArrayList();
for(int i=start; i<end; i++) {
list.add(i);
}
return list;
}
@Test
public void testEqualsArray() {
ArrayList<Integer> list1 = makeTestArray(1, 10);
ArrayList<Integer> list2 = makeTestArray(1, 10);
assertEquals(list1, list2); // 2개의 객체가 같은지 확인한다.
// assertSame() 메소드는 객체의 주소를 비교하기 때문에 같은 원소를 가지고 있어도
// 같은 객체가 아닌이상 테스트 실패한다.
// 즉, assertSame() 메소드는 두 객체가 하나인 객체인지 비교할 때 사용한다.
assertSame(list1, list2); // AssertionError
}
}
assetArrayEquals()
배열이 동일한지 확인할 때는 assertArrayEquals() 메소드를 사용한다.
import java.util.ArrayList;
import org.junit.Test;
import static org.junit.Assert.*;
public class JavaTest2 {
@Test
public void testArrayEquals() {
int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
assertArrayEquals(array1, array2);
}
}
실패한 경우 아래와 같이 출력된다.
# 원소의 개수가 다른 경우
java.lang.AssertionError: array lengths differed, expected.length=3 actual.length=4
...
# 원소 구성이 다른 경우
arrays first differed at element [3];
Expected :5
Actual :4
Exception 테스트
원하는 Exception을 테스트를 할때는 Test 어노테이션에 expected 값으로 Exception 클래스를 넣어주면된다.
// 성공
@Test(expected = RuntimeException.class)
public void testRuntimeException() {
throw new RuntimeException();
}
// 실패
@Test(expected = RuntimeException.class)
public void testRuntimeException() throws Exception {
throw new IOException();
}
기타 옵션
Ignore
테스트를 하다보면 테스트를 생략하고 싶은 경우가 있을 수 있다.
이때는 Ignore 어노테이션을 사용한다.
import org.junit.Test;
import org.junit.Ignore; // Ignore 어노테이션을 사용하기 위해
import static org.junit.Assert.*;
public class JavaTest2 {
@Test
@Ignore // SKIP
public void testAdd() {
// ... 생략 ...
}
@Test
@Ignore("테스트 생략") // SKIP
public void testEqualsArray() {
// ... 생략 ...
}
@Test
public void testArrayEquals() {
// ... 생략 ...
}
}
Ignore 어노테이션이 붙어있는 메소드의 경우, 테스트를 하지 않고 넘어간다.
어노테이션 인자로 메세지를 넣어, 테스트 생략과 동시에 해당 메세지를 화면에 출력할 수 있다.
timeout
Test 어노테이션에 timeout 값을 이용하여, 테스트를 할때 제한시간을 설정할 수 있다.
@Test(timeout = 1000)
'Language > JAVA' 카테고리의 다른 글
Java의 정석 - Chapter 02. 변수 variable (0) | 2019.11.19 |
---|---|
Java의 정석 - Chapter 01. 자바를 시작하기전에 (0) | 2019.10.08 |
MacOS, JDK 설치(Java SE Development Kit 12.0.1) (2) | 2019.07.16 |
JAVA :: 중복된 숫자의 쌍의 개수 구하기, 간단하지만 알아야 하는 코딩 (4) | 2018.05.09 |
JAVA :: n까지 모든 소수 구하기, 간단하지만 알아야 하는 코딩 (5) | 2018.05.09 |
최근댓글