관리 메뉴

I LOVE EJ

Eclipse Plugin - DbEdit 설치 본문

Tool/Eclipse

Eclipse Plugin - DbEdit 설치

BeOne 2007. 10. 15. 17:33

http://tong.nate.com/bassdot/26624564

 

Eclipse 3.0에서 Eclipse의 성능을 더 높이기 위해서 다음과 같은 활용 팁들이 있네요..

영문버전은 http://java.about.com/od/eclipseplatform/a/perform_tips.htm 이고요..

1. 메모리 Heap사이즈의 설정한다.

주절주절 있지만 간단히 말해 이클립스에 최소한의 메모리 사이즈를 지정해서 실행하게 한다. 

방식은 이클립스 바로가기의 대상에  -vmargs -Xmx256m 을 추가해준다. 

즉 256의 메모리를 사용한다는 것이다.

 

2. 자동 폴딩기능을 죽인다.

Window->Preferences->Java->Editor->Folding tab 에서 모든것의 체크를 없애면 자동 폴딩 기능을 죽일수 있다.


 

3. 코드 인사이트 기능을 죽인다. 

Window ->Preferences->Java->Editor->Code Assist tab에서  Enable auto activation의 체크를 없앤다. 이는 control-space버튼을 누름으로써 그냥 쓰면 된다. 자동 으로 하면 괜히 귀찮고 리소스만 더 먹는다.

 

 

Eclipse의 Code, Commnet 템플릿 기능 사용하기 | Useful Tools 2006/09/19 20:25
http://blog.naver.com/jadin1/70008717232

제목

Eclipse의 Code, Commnet 템플릿 기능 사용하기

작성자

DEV.WON ( http://blog.naver.com/jadin1 )

작성일

2006-09-19

배포

PUBLIC (, 출처는 밝혀 주세요)





이클립스에는 코드 템플릿 기능이 있다.

이 기능을 활용하여 Javadoc을 생성해 보도록하자.

Javadoc을 모르는 독자는 먼저 Javadoc을 숙지하도록 하자.


필자는 이클립스 3.2버젼에서 문서를 작성하였다.

그외 버젼도 대동소이 하므로 별 무리가 없을 것이다.

먼저 이클립스메뉴에서 Windows > Preferences > 트리노드에서 Java > Code Style > Code Templates 를 선택하면 다음 과 같은 화면을 볼수있다.






우선 Comments노드를 확장해보자.

하나씩 둘러보자.. 무심결에 클래스나 기타 파일을 생성하면서 생기는

/**  */ 형태의 javadoc주석들이 보일것이다.


Comments노드는 주석 템플릿으로서 생성자,타입,메소드,오버라이드 등의 메소드의 주석 을 지정하게 된다.

Code노드는 새로운 소스를 생성하거나 catch블록, 메소드 생성, Constructor생성등의

경우에 주석의 내용을 채우는 내용을 지정할수 있다.



한번 실습해보자.

먼저 Comments노드에 Types노드를 클릭하자.

아래와 같은 화면이 나온다. (필자는 별도의 세팅을 하지 않은 디폴트 상태였다.)




이 창에서 오른쪽에 edit라는 버튼을 클릭하여 편집해보자.


필자는 아래와 같이 세팅하였다.  주목할것은 바로 아래와 같이 편집 모드에서 밑에 Insert Variable..버튼을 클릭하면 사용가능한 태그 들의 목록이 나와 선택하면 자동으로 만들어준다.

얼마나 편리한가...ㅜㅜ


 
 
이제 java파일을 이클립스에서 생성하는 이벤트(?)가 발생할때 기술하게 될 주석 템플릿을 설정해보자. Code노드에 New Java files 노드를 선택후 마찬가지로 Edit버튼을 클릭하여 편집한다.
필자는 아래와 같이 설정하였다.
 

 
 
 
OK를 누른후 실제로 자바 파일... 흠 클래스 파일을 만들어보자.
그리고 과연 설정한대로 주석 템플릿이 지정되었는지 눈으로 확인해보자.
 


필자는 위와 같이 나왔다.

Code노드를잠깐 살펴보자.


New Java Files : 새로운 클래스나 인터페이스등을 생성할때 적용

Catch block body : try/catch 구문 사용시 적용

Method body : 새로운 메소드 생성시 적용

Constructor body : 새로운 생성자 생성시 적용


그외 한번씩 적용 하다보면 별 무리 없이 익숙해지리라 생각한다.


아무튼 다시 한번 이클립스의 강력함과 편리함에 감동을 받고 .. 다음단계로 넘어가자.

코드 템플릿과 주석 템플릿은 새로 Java소스를 작성할떄마다 이클립스가 알아서 작성해준다.

그런데 만약 이클립스의 템플릿 기능을 오늘 알게 되었다 치자.

앞으로는 그렇다 치더라도 이미 작성해놓은 소스들은 이런식으로 템플릿화 하지 않아

일관성이 없어진다. 이런 경우에 이미 작성해 놓은 소스도 지정한 템플릿으로 바꿔보자.

놀랍지않은가?


이클립스 좌측에 패키지 탐색 혹은 네이게이터 뷰에서 원하는 소스 파일을 선택한후 오른쪽 버튼

팝업에서 Source 를 보자. 아래와 같은 팝업메뉴가 뜬다.




 
 
잠깐 살펴보자면..
Override/Implement Method : 인터페이스, 추상클래스, 오버라이딩, 혹은 인터페이스 구현 등을 하는 메소드를 자동으로 추가해준다.
 
Generate Getter and Setter : 멤버 필드를 대상으로 getter, setter메소드 를 생성해 준다.
 
Add Constructors from Susperclass : 부모 클래스의 생성자 를 추가해준다.
 
 
 
여기서 팁한가지!!!
위에서 말한 대로 기존의 코드들도 새로이 지정한 템플릿에 맞춰보자..
 
 
필자는 메소드에 관해서 아래와 같이 템플릿을 만들었다.
 
 
 
 
자 이제 메소드 생성 이 될때 위와 같이 설정한 템플릿대로 주석이 달릴것이다..
 
아래는 기존에 작성된 메소드이다..
보시다 시피 어떠한 주석도 없다. ㅜㅜ
 
 
이제 방금 적용시킨 템플릿을 적용시켜 보자.
 
 
 
위와 같이 클릭 하면, 메소드에 관련된 Comment 템플릿에 의한 주석이 아래와 같이 생성된다.
 

 
 
 
마치며...
 
이로써 간단하게 이클립스 IDE에서 템플릿 기능을 설정하고 사용하는 것을 살펴보았습니다.
 
이클립스에는 이보다 더 많은 강력한 기능을 제공하고 있습니다.
 
그 대표적인 예로.. 이클립스 플러그인 과 CVS Client, Junit의 통합, 리팩토링 기능등..
 
자바 환경 IDE로써 아주 훌륭하지요..
 
다음에 기회가 되면 이클립스에서의 디버깅 이나 junit 사용법등을 소개하겠습니다.
 
 
Eclipse Plugin - DbEdit 설치 | JSP 2006/07/20 17:33
http://blog.naver.com/gaeean/60026514001

▩ Eclipse Plugin - DbEdit 설치
- Eclipse상에서 데이터베이스 접속을 쉽게하여 쿼리를 실행 할 수 있도록 해주는 Plug -in입니다.

1. http://sourceforge.net/projects/dbedit에 접속하여 다운을 받습니다.


2. 'dbedit_1.0.3'을 'Download' 합니다.


3. 전송받으려는 파일을 선택하고 다운 받습니다.


4. 'Seattle'에서 다운을 받습니다.



5. download 받은 후 features, plugins 폴더에 있는 파일을 eclipse의 features, plugins 폴더로 복사 후 eclipse를 재 시작하면 인식이 됩니다.



6. 재 시작 한 후 Customize Perspective에서 DbEdit관련 항목을 선택합니다.


7. commands 탭에서도 DbEdit 관련 항목을 선택합니다.

8. 'Connection'메뉴에서 'Configure'메뉴를 클릭하고 아래처럼 설정을 합니다.
- Oracle Connection setting
. JDBC Driver: oracle.jdbc.driver.OracleDriver
. Server URL: jdbc:oracle:thin:@172.16.6.21:1521:ora9

9. 미리 설치된 오라클 드라이버 'classes12.jar' 경로를 설정합니다. 경로 설정 후 [Apply] 버튼을
클릭 후 [Connect]버튼을 클릭합니다.
- C:\jdk1.5.0_06\jre\lib\ext\classes12.jar

10. 'Window -- Open Perspective'에서 'DbEdit'를 선택합니다.

11. SQL파일을 추가합니다.

12. SQL파일을 추가할 프로젝트와 파일명을 입력합니다.

13. SQL을 실행합니다. 화면에 보이는 각종 탭은 드래그 앤 드롭으로 위치를 변경 및 이동할 수 있습니다.
쿼리를 입력 후 실행은 그림에 표시된 아이콘을 클릭합니다.

14. 화면 우측의 Perspective를 바꿔가면서 작업을 합니다.

15. 'Window - Show View - Instant SQL'을 이용하면 좀더 편리하게 SQL을 실행 할 수 있습니다.





출처

http://www.nulunggi.pe.kr/java/eclipse/dbedit_oracle/dbedit.html

JUnit이란  한마디로 테스트 툴이다.  프로그램 테스트할때 사용한다.

 

class 화일을 테스트를 할때.. 반드시 main() 를 만들어 겉으로만 테스트 하는것은 테스트라 보기 어렵다고 한다.

 대형 프로젝트의 경우 시나리오가 나오고 로직이 나오면 로직의 문제를 테스트하는것을 테스트라 말 할 수 있다고 한다.

JUnit는 이렇게 보이지 않고 숨겨진 단위 테스트를 좀더 수면 위로 끌어올리고 정형화시켜주는 단위 테스트 프레임워크의 자바 구현물이며 1.4버젼에서 추가된 assertXXX를 사용하여 Test를 하더라구요

 

-- Eclipse에서 사용법

저도 잘 모르지만... 다른것보단 간단하더라구요..

Eclipse 2.1 버전 이상에서는 Junit을 기본으로 사용하고 있어서...

밑에 읽어보시면 알겠지만. ..  classpath를 따로 잡아주지 않아도.

Eclipse 에서는 default 여서 그냥 사용하시면 됩니다.

확인법  : Window->Preferences->Jave->JUnit 모든것을 체크 해주면 됨..

 

File->NEW->project에서 TestCase, TestSuite가 없으신 분은

Window ->Customize Perspective->File>New에서 찾아서 체크만 해주면 ok

 

실행은 Run->JUnit

실행하면 왼쪽에 JUnit 창이 뜰것인데.

그쪽에 아무것도 안뜨고 초록 막대가 보이면 Test 성공

에러나면  빨간 막대.. Junit 창에 에러가 쫙~~ 뜹니다.

 

 

 밑에 다른 사이트에 퍼온건데 정리가 잘 되어 있더라구요..  도움이 되실꺼예요.

 

 

---------------------------------------------------------------------------------------

 

xp[eXtreme Programming]: 주된작업이 코딩부분에 초점을 두고 있는 경량 개발 방법론

xp의 중심적인 중요사항 :

  의사소통(communication), 단순성(simplicity), 피드백(feedback),자신감(courage)에 기초를 한다.  의사소통은 짝프로그래밍, 작업견해논의, 반복되는 계획을 수월하게 수용할수 있는가에 대한 중요요소, 단순성은 같은 내용을 과도하게 작성하지 않고 기본에 충실하여 간결한 구조를 처음부터 끝까지 유지하는데에 있다. 피드백은 매우중요하며 코드테스팅, 고객의 요구 사항, 부분적인 반복작업및 여러차례의 결과물인도, 짝프로그래밍/지속적인 코드 검토등의  과정에 의해 이루어진다.
자신감은 문제에 대해 바른 길이 무엇인지 적극적으로 판단하여 리팩토링을 할것인지, 코드를 버릴지, 프로젝트를 중단할지, 품질 요소를 높일 것인지에 대해 결정하는 것에 관한 사항이다.


켄트 벡은 책에서
     열두가지의 중요 실천사항을
말하였는데
계획단계(planning game), 작은 규모 릴리즈(small releases), 단순한 설계(simple design), testing, 지속적인 통합(continuous integration),
리팩토링(refactoring) ,짝프로그래밍(pair programming), 코드공동소유(collective ownership), 40시간내 해결(40-hour week),
현장 고객 상주(on-site customer) , 메타포(metaphor), 코딩표준(coding standard)이다.

이중에서 자동화된 테스팅과 지속적인 통합을 수행하기위한 툴 사용에 초점을 둔다.

xp는 전체 테스팅을 한주, 한달, 끝날때 가 아닌 매일 하도록 권하고 있다.
통합 테스팅과 기능테스트를 매일 한다면 문제를 조기에 발견 하는 것이 가능할 것이다.

J2EE환경에서는 (시스템이 복잡한 경우가 대부분) 도구를 사용하여 통합 절차가 복잡한 시스템에서 지속적 통합을 위해
통합 절차를 자동화할 필요가 있다.


<<참고 도서: Java Tools for eXtreme Programming >>
==========================================================================

JUnit개요
test case는 일련의 테스트를 실행하기 위한 장치(fixture, 기능, 원시코드경로, 멤버 함수간의 상호작용)을 정의하는 것이다.
        전형적으로 작성한 모든 클래스는 테스트 케이스를 가지고 있어야 한다.

테스트 Fixture는 테스트 수행에 필요한 자원 즉, 프리미티브 변수와 오브젝트를 제공하는 것
        동일하거나 유사한 오브젝트에 대한 테스트가 두개 이상 있을 경우 테스트 환경을 셋업하기 위한 코드를 각 테스트에서
        꺼내서 하나의 메소드에 넣어둔다.
        동일한 호나경에서 실행되는 테스트를 위한 설정을 테스트 Fixture라고 한다.

테스트 스위트(test suite) 는 관련된 테스트 케이스를 모아 놓은 것을 말한다.


==========================================================================

 


 

 

==========================================================================

<<출처 : http://wiki.tdd.or.kr/ >>

Unit Test
JUnit의 사용법을 말하기 전에 도대체 테스팅이란 무엇인지 그 의미에 대해서 짚고 넘어가자.

테스트는 말 그대로 우리가 만든 프로그램이 원하는 대로 동작하는지 알아보는 것에 불과하다. 그렇다면 우리가 원하는 대로 동작하는지 알 수 있는 방법은 무엇이 있을까?

그것은 단 한가지이다.

기대값과 결과값을 비교한다.

우리가 기대하던 결과를 프로그램이 출력하는지를 살펴 보는것이 테스팅의 기본이고 끝이다.

유닛 테스트는 이러한 기대값과 결과값을 비교한다. TDD[Test Driven Development]는 이러한 유닛 테스트를 기본으로 한다. 다만 테스트의 범위가 매우 작은것이 그 특징이라 할 수 있다.

비행기를 만들고 비행기가 날아가는 것을 보는것도 테스팅이지만 비행기의 부속하나하나 역시 테스트 하지 않던가?
TDD는 비행기를 테스트 하는것이 아니라 비행기의 부속 하나하나를 꼼꼼하게 테스트한다. 그리고 100% 그 테스트를 통과해야 한다.

 

JUnit 사용법
http://www.junit.org/ 에서 junit.jar파일을 구하고 자바 클래스 패쓰에 다운 받은 jar파일을 설정한다.

그리고 에디터로 다음의 코드를 작성해 보자.

package tddbook;

import junit.framework.TestCase;

public class JUnitTutorialTest extends TestCase {
    public JUnitTutorialTest(String arg0) {
        super(arg0);
    }

    public void testNumber() {
        int expected = 10;
        assertEquals(expected, 2 * 5);
    }

    public static void main(String args[]) {
        junit.textui.TestRunner.run(JUnitTutorialTest.class);
    }
}
이것이 바로 JUnit을 이용한 테스트 코드이다. TestCase를 extends해서 testXXX메써드들을 테스트하고 있다.

위와 같은 모습의 코드가 전형적인 Junit을 이용한 코드의 틀이라고 할 수 있겠다. 위의 testNumber가 실제적인 테스트를 행하는 메써드이며,
이렇게 메써드명이 test로 시작하는 메써드들은 원하는 만큼 많이 만들어서 쓸 수가 있다.

그렇다면 testNumber메써드를 보자. assertEquals라는 TestCase를 통해서 extend받은 메써드를 이용하여 2*5의 결과값이 기대한 값 (expected)와 일치하는지를 비교한다.

위의 코드를 실행하면 다음과 같은 결과를 보게 된다.

.
Time: 0.01

OK (1 test)

자세히 보면 제일 윗줄에 점(.)이 하나 보이는데 이것은 test로 시작하는 메써드들의 갯수 즉, 테스트의 갯수를 의미한단.
다음의 Time은 테스트하는데 소요된 시간을 말하며 OK는 1개의 테스트가 성공했음을 알린다.

이렇듯 text로 그 결과를 보여주는 까닭은 우리가 main메써드에서 junit.textui.TestRunner을 사용했기 때문이며 이 외에도 awt나 swing을 이용한 visual한 결과를 볼 수도 있다.

see also : JunitGui - awt, swing을 이용한 유닛 테스팅

이번에는 테스트가 실패할 경우 어떻게 보여지는지 살펴보도록 하자. 다음과 같이 위의 코드를 수정해 보자.

package tddbook;

import junit.framework.TestCase;

public class JUnitTutorialTest extends TestCase {
    public JUnitTutorialTest(String arg0) {
        super(arg0);
    }

    public void testNumber() {
        int expected = 10;
        assertEquals(expected, 2 * 5);
    }
   
    public void testFailMessage() {
        int expected = 10;
        assertEquals(expected, 3*5);
    }

    public static void main(String args[]) {
        junit.textui.TestRunner.run(JUnitTutorialTest.class);
    }
}

testFailMessage라는 메써드를 추가했다. 코드를 보면 expected는 10이지만 3*5의 값은 10일리 없다.

위의 테스트 코드를 실행하면 다음과 같은 결과를 보게 된다.

..F
Time: 0.01
There was 1 failure:
1) testFailMessage(tddbook.JUnitTutorialTest)junit.framework.AssertionFailedError: expected:<10> but was:<15>
        at tddbook.JUnitTutorialTest.testFailMessage(JUnitTutorialTest.java:17)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at tddbook.JUnitTutorialTest.main(JUnitTutorialTest.java:21)

FAILURES!!!
Tests run: 2,  Failures: 1,  Errors: 0
점 두개는 역시 테스트의 갯수를 말하며 그 옆의 F는 테스트가 실패(Fail)되었음을 말한다. There was 1 failure: 밑에는 실패한 이유와 trace가 보인다.

우리의 짐작처럼 기대값은 10인데 결과값이 15라서 AssertionFailedError가 발생했음을 알려준다.

마지막 줄은 총 2개의 테스트 중 1개의 Fail이 있고 Error는 0개임을 말한다. 테스트 코드에서 Fail과 Error는 다르다.
Fail은 우리가 테스트한 기대값과 결과값이 다를때 발생하지만 Error는 코드상의 오류나 NullPointerException같은 예측못한 Exception이 발생할 때 생긴다.

setUp & tearDown
setUp - JUnit 테스트 코드의 setUp 메써드는 특별한 의미이다. 주로 코드내에서 사용할 리소스를 초기화 시킬때 setUp을 이용한다.
즉, 각각의 테스트 코드가 항상 new Person()이라는 statement를 실행한다면 이것은 setUp에 선언해서 테스트 매써드가 실행될 때마다 수행하게 할 수 있는 것이다.
다시 말해 setUp은 각각의 testXXX메써드들이 수행되기 바로 직전에 매번 실행되는 것이다.

 


tearDown - setUp과 반대의 경우라고 생각하면 된다. testXXX매써드가 종료될 때마다 수행되는 매써드이다. 사용한 리소스를 클리어할때 주로 사용된다.

Examples.

package tddbook;

import junit.framework.TestCase;
import java.util.*;

public class TestSetupTearDown extends TestCase {

    public TestSetupTearDown(String arg0) {
        super(arg0);
    }

    public static void main(String[] args) {
        junit.textui.TestRunner.run(TestSetupTearDown.class);
    }
   
    Vector employee;

    protected void setUp() throws Exception {
        employee = new Vector();
    }

    protected void tearDown() throws Exception {
        employee.clear();
    }
   
    public void testAdd() {
        employee.add("Pey");
        assertEquals(1, employee.size());
    }
   
    public void testCleared() {
        assertEquals(0, employee.size());
    }

}


JUnit Useful Methods
JUnit에서 가장 많이 사용되는 메써드는 assertEquals이지만 이 외에도 여러 유용한 메써드들이 있는데 그것에 대해서 알아보기로 하자.

assertTrue(X)
X가 참인지를 테스트한다.

assertFalse(X)
X가 거짓인지를 테스트한다.

assertNull(X)
X가 NULL인지를 테스트한다.

assertNotNull(X)
X가 NULL이 아닌지를 테스트한다.

fail(MSG)
무조건 실패시킨다 (MSG를 출력한다. ) 주로 Exception테스트를 할때 사용된다.


<< 출처 : http://www.yeonsh.com/ >>

JUnit Cookbook
A cookbook for implementing tests with JUnit.


간단한 Test Case
뭔가를 테스트하고 싶을 때 순서:

1. TestCase 클래스의 인스턴스를 만든다.
2. runTest() 메소드를 override한다.
3. 값을 검사하고 싶으면, assert()를 호출해서 테스트가 성공일 때 참이 되는 boolean을 전달한다.


  public void testSimpleAdd() {
      Money m12CHF= new Money(12, "CHF");
      Money m14CHF= new Money(14, "CHF");
      Money expected= new Money(26, "CHF");
      Money result= m12CHF.add(m14CHF);
      assert(expected.equals(result));
  }
 


이미 작성한 테스트와 유사한 테스트를 다시 작성해야 한다면 대신 Fixture를 만든다. 만일 하나 이상의 테스트를 실행해야 한다면 Suite를 만든다.


Fixture
동일하거나 유사한 오브젝트에 대한 테스트가 두개 이상 있을 경우 테스트 환경을 셋업하기 위한 코드를 각 테스트에서 꺼내서 하나의 메소드에 넣어 둔다.
동일한 환경에서 실행되는 테스트를 위한 설정을 Fixture라고 한다.

처음 테스트를 작성할 때는 테스트 자체를 위한 코드보다는 테스트를 위한 환경 설정에 더 많은 시간이 들 것이다. Fixture를 작성해놓으면 다음에 테스트를 작성할 때 시간이 절약될 것이다.

공통 Fixture가 있을 경우 할 일:

1. TestCase 클래스의 서브 클래스를 만든다.
2. Fixture의 각 파트를 위한 인스턴스 변수를 추가한다.
3. setUp()을 override해서 변수를 초기화한다.
4. tearDown()을 override해서 setUp()에서 할당한 자원들을 해제한다.


  public class MoneyTest extends TestCase {
      private Money f12CHF;
      private Money f14CHF;
      private Money f28USD;
   
      protected void setUp() {
          f12CHF= new Money(12, "CHF");
          f14CHF= new Money(14, "CHF");
          f28USD= new Money(28, "USD");
      }
  }
 

Test Case

Suite
TestSuite는 많은 테스트 케이스들을 함께 실행할 수있다.

하나의 테스트 케이스를 실행하는 방법은 아래와 같다.

  TestResult result= (new MoneyTest("testMoneyMoneyBag")).run();
 
두개의 테스트 케이스를 한번에 실행할 때는 아래와 같이 한다.

  TestSuite suite= new TestSuite();
  suite.addTest(new MoneyTest("testMoneyEquals"));
  suite.addTest(new MoneyTest("testSimpleAdd"));
  TestResult result= suite.run();
 


다른 방법은 JUnit으로 하여금 TestCase에서 suite를 추출하도록 하는 것이다. 그렇게 하기 위해서는 TestSuite의 생성자에 테스트 케이스의 클래스를 전달한다.

  TestSuite suite= new TestSuite(MoneyTest.class);
  TestResult result= suite.run();
 
테스트 케이스의 일부만 테스트할 때는 수작업으로 하나씩 지정하는 방법을 사용한다. 그 외의 경우에는 위와 같이 자동 추출되도록 하면 테스트 케이스를 추가할 때마다 지정하지 않아도 되므로 좋다.

TestSuite는 Test Interface를 implement하는 모든 오브젝트를 포함할 수 있다.

  TestSuite suite= new TestSuite();
  suite.addTest(Kent.suite());
  suite.addTest(Erich.suite());
  TestResult result= suite.run();
 

TestRunner
어떻게 테스트를 실행하고 결과를 수집할 것인가? JUnit은 실행할 suite를 정의하고 결과를 표시하기 위한 도구(TestRunner)를 제공한다. test suite를 넘겨주는 static method suite()를 사용하면 TestRunner가 suite에 접근할 수 있다.

예를 들어, TestRunner가 MoneyTest suite를 사용할 수 있게 하려면, 아래와 같은 코드를 MoneyTest에 추가한다

  public static Test suite() {
      TestSuite suite= new TestSuite();
      suite.addTest(new MoneyTest("testMoneyEquals"));
      suite.addTest(new MoneyTest("testSimpleAdd"));
      return suite;
  }
 
만일 TestCase가 suite 메소드를 정의하지 않는다면 TestRunner는 'test'로 시작하는 모든 메소드들을 추출해서 suite를 만들 것이다.

JUnit은 TestRunner 툴의 텍스트 버전과 그래픽 버전을 제공한다. junit.textui.TestRunner는 텍스트 버전이고 junit.ui.TestRunner와 junit.swingui.TestRunner는 그래픽 버전이다.

TestCase 클래스에 main()을 정의해놓으면 직접 TestRunner를 호출할 수도 있다.

  public static void main(String args[]) {
      junit.textui.TestRunner.run(suite());
  }
 
위의 모든 방법으로 테스트가 정상실행되도록 하기 위해서는 CLASSPATH에 junit.jar 파일이 들어 있어야 한다.