U E D R , A S I H C RSS

JUnit/Ecliipse


1. 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을 사용하기 위한 준비는 끝입니다.

2. Sample Example

Example 3-1. The Ch03_01.java
~cpp 
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) )를 모두 체크합니다.

아래와 같은 새 클래스가 생성되었습니다.

~cpp 
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() {
	}
}
이제 자신이 테스트를 하고싶은 메서드에 원하는 코드를 추가하면 됩니다.

테스트를 하기위해 사용되는 메서드의 리스트는 아래와 같습니다.

1. assertEquals(a,b)
2. assertFalse(a)
3. assertNotNull(a)
4. assertNotSame(a,b)
5. assertNull(a)
6. assertSame(a,b)
7. assertTrue(a)

Java Beans 형식으로 되어있으므로 메서드에 대한 설명은 하지 않습니다.

이제 아래와 같이 코드를 수정합니다.
~cpp 
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() 메서드를 다음과 같이 수정합니다.
~cpp 
	public int[] allocate() {
		array = new int[3];
		array[0] = 0;
		array[1] = 1;
		array[2] = 2;
		return array;
	}
다시 Run을 하면 Error가 두개로 줄었음을 알 수 있습니다.

나머지 두개의 Error는 JUnit이 모든 테스트를 독립적으로 실행하기 때문에 발생하는 것 입니다.

결국 메서드 단위로 독립적이라고 생각하시면 되겠습니다.
따라서, 아래와 같이 테스트 코드를 수정하시고,

~cpp 
	public void testGet() {
		testObject.allocate();
		assertEquals(testObject.get(1),1);
	}

	public void testSet() {
		testObject.allocate();
		assertTrue(testObject.set(2,3));
	}

다시 실행을 하시면, 왼쪽의 상태바가 녹색으로 나타나는 것을 확인 할 수 있습니다.
각각의 메서드를 독립적으로 테스트하기 때문에 일어나는 에러를 확인할 수 있는 부분이 되겠지요.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:29
Processing time 0.0197 sec