From Gossip@caterpillar

JUnit Gossip: 自動建構與測試

Ant可以進行自動化建構,而JUnit可以進行自動化測試,Ant可以與JUnit結合,使得自動化的建構與測試變得可行。

這邊使用 第一個 JUnit 測試 中的測試案例,來示範如何將Ant結合JUnit以進行自動化建構與測試,之前的測試案例是:

  • MathToolTest.java
package onlyfun.caterpillar.test;

import onlyfun.caterpillar.MathTool;
import junit.framework.TestCase;

public class MathToolTest extends TestCase {
public void testGcd() {
assertEquals(5, MathTool.gcd(10, 5));
}

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

而要測試的對象是:
  • MathTool.java
package onlyfun.caterpillar;

public class MathTool {
public static int gcd(int num1, int num2) {
int r = 0;
while(num2 != 0) {
r = num1 % num2;
num1 = num2;
num2 = r;
}
return num1;
}
}

Ant使用<junit>任務來設定JUnit測試,下面直接示範一個簡單的例子:
  • build.xml
<project name="autobuildtest" default="test"> 
<target name="setProperties">
<property name="src.dir" value="src"/>
<property name="classes.dir" value="classes"/>
</target>

<target name="prepareDir" depends="setProperties">
<delete dir="${classes.dir}"/>
<mkdir dir="${classes.dir}"/>
</target>

<target name="compile" depends="prepareDir">
<javac srcdir="./src" destdir="${classes.dir}"/>
</target>

<target name="test" depends="compile">
<junit printsummary="yes">
<test
name="onlyfun.caterpillar.test.MathToolTest"/>
<classpath>
<pathelement location="${classes.dir}"/>
</classpath>
</junit>
</target>
</project>

printsummary屬性會將測試的結果簡單的顯示出來,<test>的name屬性是設定要進行測試的案例類別,Ant建構與調用 JUnit進行測試的訊息如下:
p>ant
Buildfile: build.xml

setProperties:

prepareDir:
    [mkdir] Created dir: D:\temp\classes

compile:
    [javac] Compiling 2 source files to D:\temp\classes

test:
    [junit] Running onlyfun.caterpillar.test.MathToolTest
    [junit] Tests run: 1, Failures: 0, Errors: 0,
            Time elapsed: 0 sec

BUILD SUCCESSFUL
Total time: 6 seconds