사용환경은 eclipse 3.2 JDK 1.4.2 , Junit 3.8.1
먼저 해야될 일은 eclipse 에서 java 프로젝트에 junit.jar 를 import 해야한다.
Project 에서 오른쪽 마우스 클릭하여 properties 선택한다.
Java Build Path > Libraries 탭을 선택하고 오른쪽에 Add Exteranl JARS .. 선택하여
그림과 같이 다운받아서 설치해놓은 eclipse 폴더의 junit.jar 링크한다다른 방법은 eclipse 에 junit 을 설치 했다면 add Library 클릭해서 나오는 화면에 junit 이
추가되어있다 . 이것을 선택하면된다현재 2가지의 junit 이 설치되어있는 것이 보일것이다
추가된화면이다.
이제 testcase 파일을 만들어본다. 마우스를 패키지에 가져가서 오른쪽마우스 클릭 > New
> Junit Test Case 클릭
기본설정된 내용을 그대로 사용한다.
Which method stubs would you like to create? 란은
3가지 함수는 TestCase 클래스의 함수를 상속해서 사용할건지를 묻는 것인데
setUp() 은 클래스 초기화를 할 때 쓰는 함수이며
tesrDown() 은 클래스 종료시에 호출되는 함수이다.
상속하는게 없으면 finish 누르고 끝내지만 아래 그림과 같이 Class under test란에 클래스를
선택하게 되면 함수 리스트가 나오게 되는데 그 함수중 선택을 하게 되면
테스트 케이스는 그것을 실행하게 된다.
선택한 클래스에서 사용할 함수목록들이 나와있다. 선택하고 finish 를 클릭한다.
import junit.framework.TestCase;
import org.apache.log4j.Logger;
class Fibo{
private Logger log = Logger.getLogger(this.getClass());
public int get(int n){
int result;
if (n == 1 ||
n == 2){
result = 1;
}else{
result = get(n-1) +
get(n-1);
}
log.debug(Integer.toString(result));
return result;
}
}
public class WorkingStepMainTest extends TestCase {
protected void setUp() throws Exception {
super.setUp();
}
public void testMain(){
Fibo fibo = new Fibo();
assertEquals(2,
fibo.get(1));
assertEquals(1,
fibo.get(2));
assertEquals(fibo.get(1)+fibo.get(2),
fibo.get(3));
assertEquals(fibo.get(2)+fibo.get(3),
fibo.get(4));
assertEquals(55, fibo.get(10));
}
}
다음은 위의 소스를 실행해본다.
그럼 junit 테스트 perspective 가 나타나면서 결과를 왼쪽에 보여준다.
그림에서 보는 바와 같이 수행시간, 실행한 개수 , 에러 개수. 실패갯수 가 나오며
아래쪽에 Failure Trace 를 보게 되면 실패한 에러내용과 위치가 표시 되어있다,
클릭하게 되면 그 위치로 간다.
아래와 같이 여러 케이스의 함수를 설정해놓고 테스트를 해가면 편리할것이다.
assertEquals(2, fibo.get(1));
assertEquals(1, fibo.get(2));
assertEquals(fibo.get(1) + fibo.get(2), fibo.get(3));
테스트에 쓰이는 함수들은 Assert.class 에 이쓴ㄴ데 그 클래스를 열어보면 아래와 같이
많은 함수들이 있다. 주석으로 설명이 잘 되어있으므로 자기가 테스트하고자 하는 적당한
함수를 골라 쓰면 될것이다.
assertEquals(x, y) : x 와 y 가 같으면 테스트 통과
assertFalse(b) : b가 false 이면 테스트 통과
assertTrue(b) : b가 true 이면 테스트 통과
assertNull(o) : 객체 o 가 null 이면 테스트 통과
assertNotNull(o) : 객체 o 가 null 이 아니면 테스트 통과
assertSame(ox, oy) : ox 와 oy 가 같은 객체를 참조하고 있으면 테스트 통과
assertNotSame(ox, oy) : ox 와 oy 가 같은 객체를 참조하고 있지 않으면 통과
public class Assert
{
protected Assert()
public static void assertTrue(String message, boolean condition)
public static void assertTrue(boolean condition)
public static void assertFalse(String message, boolean condition)
public static void assertFalse(boolean condition)
public static void fail(String message)
public static void fail()
public static void assertEquals(Object expected, Object actual)
public static void assertNotNull(Object object)
public static void assertNull(Object object)
public static void assertSame(String message, Object expected,
Object actual)
public static void assertNotSame(Object expected, Object
actual)
private static void failSame(String message)
private static void failNotSame(String message, Object expected,
Object actual)
private static void failNotEquals(String message, Object
expected, Object actual)
static String
format(String message, Object expected, Object actual)
}
등등 다른 함수들도 많이 있으니 참고하자.
여기서 체크해 봐야할것이 에러를 출력하는 객체가 뭐냐하는것인데 모든 함수는 fail 이라는 함수를
호출하게 되는데 이 함수의 내용은 다음과 같다.
public static void fail(String message){
throw new AssertionFailedError(message);
}
AssertionFailedError
객체를 throw 로 던지게 된다.
이 객체는 Error 객체를 상속받아 구현된 클래스 인데
public class AssertionFailedError extends Error
{
public
AssertionFailedError(){}
public
AssertionFailedError(String message){
super(message);
}
}
Error 객체는 다음과 같다. 결국엔 Throwable 을 상속받은 Error 객체를 쓰는것이다.
이런 식으로 파고 들다보면 설계자의 의도를 알수 있으며 이 설계는 공인된 구조여서
학습에 많은 도움을 줄뿐만아니라 조금만 응용하면 프로젝트에서 유용하게 사용할수 있을
것이다.
자기가 Error 객체를 하나 만들어 프로젝트에 활용하고 싶다면 위와 같은 패턴으로
Throwable 를 상속받아 입맛에 맞게 고쳐 적용하면될것이다.
public class Error extends Throwable{
public Error(){}
public
Error(String s){
super(s);
}
public Error(String
s, Throwable throwable){
super(s,
throwable);
}
public
Error(Throwable throwable){
super(throwable);
}
static final long serialVersionUID = 4980196508277280342L;
}
'프로그래밍 툴 > 이클립스(Eclipse)' 카테고리의 다른 글
Eclipse 에서 JUnit plugin 으로 Servlet Test Case 를 만들어본다. (0) | 2009.03.11 |
---|---|
junit 과 HttpUnit 을 사용한 예제 (3) | 2009.03.05 |
junit 과 HttpUnit 을 활용한 Web Application 단위테스트 만들기 (1) | 2009.03.05 |
Junit 에서 여러 테스트 클래스를 한번에 이용 (0) | 2009.03.04 |
ResourceBundleEditor Plugin 을 사용하여 다국어 제작을 보다 쉽게 해보자 (0) | 2009.02.22 |
WAS weblogic 으로 구성된 web applicaiton 에서 JDK 버전바꿀수 수정해야되는 옵션 (0) | 2009.01.17 |
자바 API 한글 도움말 설치 (1) | 2008.12.20 |
ScrapBook Page 활용하기 (0) | 2008.12.20 |