반응형
JUnit
테스트 픽스쳐는 특정 로직이 테스트 전후에 실행되도록 보장하는 하나의 약정이므로 손쉽게 재활용할 수 있다.
JUnit 4 이전 버전에서는 setUp() 메소드에서 각 메소드마다 필요한 일들을 명시하면, 각 테스트 메소드가 실행되기 전에 각각 한번씩 실행이 되었다.
하지만 픽스쳐에 따른 상당한 오버헤드가 있었고 이 메소드를 한번만 하게 하려면 한번만 실행되도록 지정하는 방법이 번거로웠지만, JUnit 4에서는 모든 테스트에 대해 또는 전체 클래스에 대해 한 번 픽스쳐를 실행하거나, 아예 실행하지 않을 수 있도록 좀더 유연해 졌다.
클래스를 겨냥한 @BeforeClass, @AfterClass : 한 클래스에서 한번만 일어나도 되는 일들을 정의
메소드를 겨냥한 @Before, @After : 각 메소드마다 한번씩 일어나야하는 일들을 정의
매개변수 테스트 작성하기 5단계
exception 테스트 : 특정 유형의 예외가 발생할 경우에 테스트가 통과하는 것.
@Ignore를 이용하자~
Timed test
TestNG
Junit4와 마찬가지로 네 가지 유형의 설정 메소드들이 있다.
그림 2. 테스트 클래스 수명주기
exception 검사
@ExpectedExceptions annotation을 이용.
참고
JUnit 4로 뛰어들기
An early look at JUnit 4
예제를 통한 TestNG 살펴보기
테스트엔지로 자바 단위 테스트를 쉽게!
테스트 픽스쳐는 특정 로직이 테스트 전후에 실행되도록 보장하는 하나의 약정이므로 손쉽게 재활용할 수 있다.
JUnit 4 이전 버전에서는 setUp() 메소드에서 각 메소드마다 필요한 일들을 명시하면, 각 테스트 메소드가 실행되기 전에 각각 한번씩 실행이 되었다.
하지만 픽스쳐에 따른 상당한 오버헤드가 있었고 이 메소드를 한번만 하게 하려면 한번만 실행되도록 지정하는 방법이 번거로웠지만, JUnit 4에서는 모든 테스트에 대해 또는 전체 클래스에 대해 한 번 픽스쳐를 실행하거나, 아예 실행하지 않을 수 있도록 좀더 유연해 졌다.
클래스를 겨냥한 @BeforeClass, @AfterClass : 한 클래스에서 한번만 일어나도 되는 일들을 정의
메소드를 겨냥한 @Before, @After : 각 메소드마다 한번씩 일어나야하는 일들을 정의
매개변수 테스트 작성하기 5단계
- 매개변수를 사용하지 않는 일반 테스트를 작성한다.
-
Collection
유형을 반환하는static
피더 메서드를 작성하고@Parameter
주석으로 표시한다. - 첫 번째 단계에서 정의한 일반 메서드에 필요한 매개변수 유형에 대한 클래스 멤버를 만든다.
- 이러한 매개변수 유형을 사용하고 이를 세 번째 단계에서 정의한 클래스 멤버와 연결하는 생성자를 만든다.
-
@RunWith
주석을 통해Parameterized
클래스와 함께 실행할 테스트 케이스를 지정한다.
exception 테스트 : 특정 유형의 예외가 발생할 경우에 테스트가 통과하는 것.
public void testDivisionByZero() {
try {
int n = 2 / 0;
fail("Divided by zero!");
}
catch (ArithmeticException success) {
assertNotNull(success.getMessage());
}
}
기존에 이렇게 예외처리를 테스트하였다면, JUnit 4에선,
@Test(expected=ArithmeticException.class)
public void divideByZero() {
int n = 2 / 0;
}
이렇게 exception을 테스트할 수 있다.이전에 작성했던 테스트 메소드가 지금 당장 무시하고 싶다면!!!
테스트 무시하기
@Ignore를 이용하자~
Timed test
@Test(timeout=2000)
public void remoteBaseRelativeResolutionWithDirectory()
throws IOException, ParsingException {
builder.build("http://www.ibiblio.org/xml");
}
TestNG
Junit4와 마찬가지로 네 가지 유형의 설정 메소드들이 있다.
beforeTestClass
메소드 : 테스트 메소드가 실행되기 전, 클래스가 인스턴스로 된 후에 실행된다.afterTestClass
메소드 : 클래스의 모든 테스트 메소드가 실행된 후 이 메소드가 실행된다.beforeTestMethod
메소드 : 클래스의 모든 테스트 메소드가 실행되기 전에 이 메소드가 실행된다.afterTestMethod
메소드 : 클래스의 모든 테스트 메소드들이 실행된 후 이 메소드가 실행된다.
그림 2. 테스트 클래스 수명주기
exception 검사
@ExpectedExceptions annotation을 이용.
public class NumberUtilsTest
{
@Test(groups = {"tests.math"})
@ExpectedExceptions(NumberFormatException.class)
public void test()
{
NumberUtils.createDouble("12.23.45");
assert false; //shouldn't be invoked
}
}
추가 : 2009.2.20
기존의 @ExpectedExceptions는 deprecated되어서
@Test(expectedExceptions = " ... ")
이렇게 쓰라고 한다.
@Test(expectedExceptions = NumberFormatException.class)
참고
JUnit 4로 뛰어들기
An early look at JUnit 4
예제를 통한 TestNG 살펴보기
테스트엔지로 자바 단위 테스트를 쉽게!
반응형
'Computer 그리고 Developer > dW' 카테고리의 다른 글
[dW] 사람을 위한 자동화: 연속 테스팅 (0) | 2009.01.30 |
---|---|
[dW] 초보자를 위한 유닉스 팁과 기교, Part 4 (2) | 2009.01.29 |
[dW] iBatis에 관한 글들 (0) | 2008.12.30 |
[dW] Dojo concepts for Java developers (0) | 2008.12.27 |
[dW] IBM campus wizard 모집 (0) | 2008.12.22 |
[dW] XML 구문을 분석할 때 발생하는 오류 처리하기 (2) | 2008.12.09 |
[dW] 아파치 더비를 이용한 오프라인 Ajax (0) | 2008.11.13 |
디벨로퍼웍스 늦가을 행사 “개발자들의 수다” 행사를 하는군요. (2) | 2008.11.05 |