[펌] JUnit 2

프로그래밍/Library 2007. 11. 28. 09:33 Posted by galad

http://blog.naver.com/galad/140035831352

출처 블로그 > もも***
원본 http://blog.naver.com/dmsl01/80035693427

JUnit 


 

테스트 클래스 작성
JUnit Test 클래스는 junit.framework.TestCase 를 상속받고,

public void test*() 형태의 테스트 메소드를 작성한다.

 

JUnit 테스트의 골격
1. junit.framework.* 을 코드에 반영하기 위한 import 문
2. 테스트 클래스가 TestCase를 상속하는 extends 문(되도록 TestCase를 상속하는 다른 클래스를 만들고, 그 클래스로 다시 상속 받아 테스트 클래스를 만드는 것이 좋다)
3. super(string)을 호출해 주는 생성자


테스트 수행
 * 텍스트 : junit.textui.TestRunner TestClass
 * AWT : junit.awtui.TestRunner TestClass
 * SWING : junit.swingui.TestRunner TestClass

 

테스트 수행 메소드 부르기
public static void main(String[] args) {
    junit.swingui.TestRunner.run(AllTest.class);
}


Assertions
각 메소드는 맨 처음 인자로 문자열 설명을 가질 수 있다.

assertEquals(primitive expected, primitive actual);
assertEquals(Object exprected, Object actual);
assertSame(Object exptected, Object actual); // 두 객체가 같은가?
assertNotSame(Object exptected, Object actual);
assertNull(Object object); // 객체가 NULL인가?
assertNotNull(Object object);
assertTrue(boolean condition);
assertFalse(boolean condition);

fail(String str); : 무조건 실패


테스트 클래스의 값 초기화
테스트 클래스에 public void setUp() 메소드를 만들어주면 각 테스트 메소드가 실행되기 전에 먼저 setUp() 메소드가 실행된다.

테스트 클래스에 public void tearDown() 메소드를 만들어주면 각 테스트 메소드가 종료할 때마다 tearDown() 메소드가 실행된다.

suite()
테스트할 메소드를 명시적으로 지정하고 싶을 때 테스트 클래스에 public static Test suite() 메소드를 만든다.
public static Test suite() {
    TestSuite = new TestSuite();
    suite.addTest(new TestClass("testMethod1")); // 테스트할 메소드 이름
    suite.addTest(new TestClass("testMethod2"));

    return suite;
}


JUnit과 ANT

<junit printsummary="true" haltonfailure="no">
        <classpath>
                <pathelement path="${classes.dir}"/>
        </classpath>
        <test name="helloproject.junit1.DayCounterTest"/>
</junit>

 

haltonfailover="yes" 이면 테스트가 하나라도 실패하면 거기서 테스트를
중지해버린다.

여러 테스트를 수행하려면

<junit printsummary="true" haltonfailure="no">
        <classpath>
                <pathelement path="${classes.dir}"/>
        </classpath>
        <formatter type="xml"> <!-- 결과를 XML로 내보냄 -->
        <batchtest todir="${test.dir}"> <!-- XML결과가 저장될 Directory -->
                <fileset dir="${classes.dir}">
                        <include name="**/*Test*.class"/>
                </fileset>
        </batchset>
</junit>

 

테스트 결과 XML을 이용해 HTML로 결과 보고서 만들기 - Xalan 2 필요

<junitreport todir="${test.dir}">
        <fileset dir="${test.dir}">
                <include name="TEST**.xml"/>
        </fileset>
        <report format="frames" todir="${test.dir}/html"/>
</junitreport>