XMLでテストを記述する。JXUnitのパクリ。
普通のメソッド
テスト対象クラスは次の通り。
package sample.usually;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class DateUtils {
private Date date = null;
public DateUtils(String source) {
if (source == null || !source.matches("^[0-9]{4}-[0-9]{2}-[0-9]{2}$")) {
throw new RuntimeException();
}SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
date = format.parse(source);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}public DateUtils(Date date) {
this.date = date;
}private Date add(int field, int amount) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(field, amount);return cal.getTime();
}}
XMLは次の通り。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "../../../dtd/usualxmltestcase.dtd">
<suite>
<usualxmltestcase>
<name>日の加算1</name>
<description>
日を加算する。(Date型の場合)
</description>
<target name="sample.usually.DateUtils">
<arg type="java.util.Date" value="${2004-12-10 00:00:00}"/>
</target>
<input>
<execute name="add">
<arg type="int">
<const type="java.util.Calendar" name="DATE"/>
</arg>
<arg type="int" value="30"/>
</execute>
</input>
<expected>
<return value="${2005-01-09 00:00:00}"/>
</expected>
</usualxmltestcase>
<usualxmltestcase>
<name>日の加算2</name>
<description>
日を加算する。(文字列の場合)
</description>
<target name="sample.usually.DateUtils">
<arg type="java.lang.String" value="2004-12-10"/>
</target>
<input>
<execute name="add">
<arg type="int">
<const type="java.util.Calendar" name="DATE"/>
</arg>
<arg type="int" value="30"/>
</execute>
</input>
<expected>
<return value="${2005-01-09 00:00:00}"/>
</expected>
</usualxmltestcase>
</suite>
staticなメソッド
テスト対象クラスは次の通り。
package sample.usually;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class DateUtils_static {
public String add(String source, int field, int amount) {
if (source == null || !source.matches("^[0-9]{4}-[0-9]{2}-[0-9]{2}$")) {
return null;
}SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;try {
date = format.parse(source);
} catch (ParseException e) {
throw new RuntimeException(e);
}return format.format(add(date, field, amount));
}private static Date add(Date date, int field, int amount) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(field, amount);return cal.getTime();
}}
XMLは次の通り。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "../../../dtd/usualxmltestcase.dtd">
<suite>
<usualxmltestcase>
<name>日の加算1(static)</name>
<description>
日を加算する。(Date型の場合)
</description>
<target name="sample.usually.DateUtils_static"/>
<input>
<execute name="add">
<arg type="java.util.Date" value="${2004-12-10 00:00:00}"/>
<arg type="int">
<const type="java.util.Calendar" name="DATE"/>
</arg>
<arg type="int" value="30"/>
</execute>
</input>
<expected>
<return value="${2005-01-09 00:00:00}"/>
</expected>
</usualxmltestcase>
<usualxmltestcase>
<name>日の加算2(static)</name>
<description>
日を加算する。(文字列の場合)
</description>
<target name="sample.usually.DateUtils_static"/>
<input>
<execute name="add">
<arg type="java.lang.String" value="2004-12-10"/>
<arg type="int">
<const type="java.util.Calendar" name="DATE"/>
</arg>
<arg type="int" value="30"/>
</execute>
</input>
<expected>
<return value="2005-01-09"/>
</expected>
</usualxmltestcase>
<usualxmltestcase>
<name>日の加算3(static)</name>
<description>
日を加算する。(文字列の書式が誤っている場合)
</description>
<target name="sample.usually.DateUtils_static"/>
<input>
<execute name="add">
<arg type="java.lang.String" value="2004/12/10"/>
<arg type="int">
<const type="java.util.Calendar" name="DATE"/>
</arg>
<arg type="int" value="30"/>
</execute>
</input>
<expected>
<return value="${null}"/>
</expected>
</usualxmltestcase>
</suite>
実行結果
XMLTestRunnerの実行結果が以下のような感じ。

その他
サンプルを含むEclipsのプロジェクト一式。