UsualXMLTestCase

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