1. 프로젝트에서 테스트하기
실제 프로젝트에서 테스트를 실시 하고 자 할 때에 테스트 코드의 위치 어디에 지정할 것인가?
1.1 제품코드와 같은 디렉터리에 test 라는 이름의 테스트 코드 작성
com > example > Account.java
TestAccount.java
1.2 제품코드의 하위에 test 디렉터리를 생성하여 테스트 코드 작성
com > example > Account.java
> test > TestAccount.java
1.3 제품코드와 동일안 path의 병렬 구조로 테스트 코드 작성
com > example > Account.java
com > example > TestAccount.java
두개의 클래스 패스를 모두 설정하여 테스트 코드를 작성한다.
2. 코딩과 검토, 테스트 순서
* 코딩 -> 검토 -> 테스트의 순서로 실시 한다.
* 초기에는 테스트 보다 검토가 훨신 효과적이다.
2.1 테스트 케이스나 테스트 코드 또는 둘다 작성한다.
2.2 테스트 케이스나 테스트 코드 또는 둘다 검토한다
2.3 테스트 케이스나 테스트 코드 또는 둘다 검토할때 마다 수정한다.
2.4 테스트를 통과하는 제품 코드를 작성한다.
2.5 제품코드와 테스트 코드를 검토한다.
2.6 컴토 할 때 마다 제품코드와 테스트 코드를 수정한다.
* 모든 팀원들을 이 과정에 참여시킴으로서 다른이들이 어떻게 테스트 하는지, 팀의 규칙이 무엇인지 알게 되고
모두 숨기는 것이 없게 된다.
3. Junit 으로 테스트 해보자
3.1 이클립스 설정
- 이클립스를 update 하여 junit을 플러그인 한다.
- 테스트를 작성한 프로젝트의 클래스 패스에 junit을 추가한다.
- 테스트 케이스와 테스트 코드를 작성한다.
- 테스트 코드와 제품코드를 작성한다.
- run as junitTest 로 애플리케이션을 구동한다.
* 이클립스 상에서 suite 를 gui로 구성할 수도 있는데 이런 부분은 이론 부분 말고 정리 후에 게시될 junit
게시물에서 자세하게 화면과 함께 제시하겠다.
3.2 테스트 코드
다음은 테스트를 구동시키기 위한 헬퍼 클래스 이다.
-----------------------------------------------------------------------------------------------------
import java.lang.reflect.Method;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class TestFinder {
public static void run(Class which ,String args[]){
TestSuite suite = null;
if( args.length != 0 ){
try{
//파라미터로 넘어온 클래스를 가지고 인스턴스 객체를 생성한다.
java.lang.reflect.Constructor ctor;
ctor = which.getConstructor( new Class[] { String.class } );
suite = new TestSuite();
for(int i=0;i< args.length;i++){
//파라미터로 넘어오느 테스트 이름으로 suite에 테스트를 추가한다.
suite.addTest( (TestCase)ctor.newInstance(new Object[]{ args[i] }) );
}
}catch(Exception e){
System.exit(1);
}
//파라미터가 없을 경우
}else{
try{
//파라미터가 없을 경우 파라미터로 넘어온 클래스의 suite 메소드를 실행한다.
Method suite_method = which.getMethod("suite", new Class[0] );
suite = (TestSuite)suite_method.invoke(null,null);
}catch(Exception e){
suite = new TestSuite(which);
}
}
//테스트를 구동한다.
junit.textui.TestRunner.run(suite);
//junit.textui.TestRunner 클래스이름(확장자제외)
//junit.awtui.TestRunner 클래스이름(확장자제외)
//junit.swingui.TestRunner 클래스이름(확장자제외)
}
}
-----------------------------------------------------------------------------------------------------
다음은 위의 TestFinder 를 사용하여 테스트 할 실제 테스트 코드이다.
-----------------------------------------------------------------------------------------------------
import junit.framework.*;
public class TestSample extends TestCase {
public TestSample(String name){ super(name); }
public void setUp(){}
public void tearDown(){}
public void test01(){
//테스트 코드
}
public static Test suite (){
return new TestSuite( TestSample.class );
}
public static void main(String args[]){
TesrFinder.run(TestSample.class,args);
}
}
-----------------------------------------------------------------------------------------------------
이런식으로 테스트하면 간단한 코드로 수행 가능하다.
'컴퓨터공학 기초 > Java' 카테고리의 다른 글
I/O 클래스의 종류 (2) | 2014.07.29 |
---|---|
null String problem (0) | 2012.03.10 |
단위테스트 JUNIT (2) (1) | 2012.03.08 |
단위테스트 JUNIT (1) (1) | 2012.03.07 |
Easier click Listener, OnClick의 간단한 코드작성 방법 (0) | 2012.02.14 |