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のプロジェクト一式。