More actions
Eclipse 에서의 JUnit 설치
Eclipse 에서는 기본적으로 JUnit을 내장하고 있습니다. (참고로 저는 Eclipse 3.0 M9 버전을 사용하였습니다.)
따라서 별도의 다운로드 및 인스톨 과정없이 보다 편하게 JUnit을 사용할 수 있는 강점이 있으며, 실제로 마우스의 클릭 몇번으로 대부분의 클래스 및 메서드를 생성해 주는 강력한 기능을 지원합니다.
O'REILLY 사의 Eclipse(저자 Steve Holzner) 를 구입하시거나 제본하신 분들께서는 CHAPTER 3. Testing and Debugging 을 보시면 Sample 예제와 함께 자세한 설명이 있음을 알려드립니다.
먼저 Eclipse 에서 JUnit 을 사용하기 위한 세팅법입니다.
Eclipse 플랫폼을 실행하시고, Window->Preference 메뉴를 선택하시면 Preferences 대화창이 열립니다. 왼쪽의 트리구조를 보시면 Java 라는 노드가 있고, 하위 노드로 Build Path 에 보시면 Classpath Varialbles 가 있습니다. 요기서 New 누르시고.. Name : 은 JUNIT 으로.. Path : 는 이클립스가 설치된 폴더내에서 아래와 같은 파일을 찾아 클릭하면 됩니다.
clipse/plugins/org.junit_3.8.1/junit.jar
이것으로 Junit을 사용하기 위한 준비는 끝입니다.
Sample Example
Example 3-1. The Ch03_01.java
package org.eclipsebook.ch03;
public class Ch03_01 {
private int[] array;
public int[] allocate() {
array[0] = 0;
array[1] = 1;
array[2] = 2;
return array;
}
public int get(int index) {
return array[index];
}
public boolean set(int index, int value) {
if(index < array.length && index >= 0) {
array[index] = value;
return true;
} else {
return false;
}
}
}
위의 샘플 클래스를 JUnit을 통하여 테스트 해보도록 하겠습니다.
이클립스의 Workspace 중 Pakage Expolorer 를 보시면 Ch03_01.java 파일이 있습니다. 여기서 마우스 오른쪽 버튼을 클릭 -> NEW -> JUnit Test Case 를 선택합니다.
New 대화창이 뜨면 아래쪽의 setUP()과 tearDown()을 체크하고 Next를 누릅니다.
다음으로 자신이 테스트를 하고 싶은 메서드에 체크를 하고 Finish 하면 TestCase를 상속받는 새 클래스를 자동으로 생성하여 줍니다. 여기서는 샘플소스의 메소드 3개( allocate(), get(int), set(int,int) )를 모두 체크합니다.
아래와 같은 새 클래스가 생성되었습니다.
public class Ch03_01Test extends TestCase {
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
public void testAllocate() {
}
public void testGet() {
}
public void testSet() {
}
}
이제 자신이 테스트를 하고싶은 메서드에 원하는 코드를 추가하면 됩니다.
테스트를 하기위해 사용되는 메서드의 리스트는 아래와 같습니다.
- assertEquals(a,b)
- assertFalse(a)
- assertNotNull(a)
- assertNotSame(a,b)
- assertNull(a)
- assertSame(a,b)
- assertTrue(a)
Java Beans 형식으로 되어있으므로 메서드에 대한 설명은 하지 않습니다.
이제 아래와 같이 코드를 수정합니다.
public class Ch03_01Test extends TestCase {
Ch03_01 testObject;
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
testObject = new Ch03_01();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
public void testAllocate() {
assertNotNull(testObject.allocate());
}
public void testGet() { assertEquals(testObject.get(1),1);
}
public void testSet() {
assertTrue(testObject.set(2,3));
}
}
테스팅을 원하는 코드를 추가했으므로, Urs As -> JUnit Test 메뉴를 클릭하여 실행합니다.
왼쪽의 Workspace 에 붉은색 상태바가 나타나며 3개의 Error가 발생합니다. Error 의 발생합니다.
첫번째 에러를 수정하기 위해서
Ch03_01 클래스의 allocate() 메서드를 다음과 같이 수정합니다.
public int[] allocate() {
array = new int[3];
array[0] = 0;
array[1] = 1;
array[2] = 2;
return array;
}
다시 Run을 하면 Error가 두개로 줄었음을 알 수 있습니다.
나머지 두개의 Error는 JUnit이 모든 테스트를 독립적으로 실행하기 때문에 발생하는 것 입니다.
결국 메서드 단위로 독립적이라고 생각하시면 되겠습니다. 따라서, 아래와 같이 테스트 코드를 수정하시고,
public void testGet() {
testObject.allocate();
assertEquals(testObject.get(1),1);
}
public void testSet() {
testObject.allocate();
assertTrue(testObject.set(2,3));
}
다시 실행을 하시면, 왼쪽의 상태바가 녹색으로 나타나는 것을 확인 할 수 있습니다. 각각의 메서드를 독립적으로 테스트하기 때문에 일어나는 에러를 확인할 수 있는 부분이 되겠지요.