Mockのテスト

てことで、

ターゲットクラス

public class DateUtil {
	public SystemDate sysDate;
	public SystemDate getSysDate() {
		return sysDate;
	}
	public void setSysDate(SystemDate sysDate) {
		this.sysDate = sysDate;
	}
	
	//現在の日付の次の平日の日付を返す
	public Calendar getNextWeekDay(){
		Calendar nextWeekDay = (Calendar)getSysDate().today().clone;
		do {
			nextWeekDay.add(Calendar.DATE,1);
		} while ((nextWeekDay.DAY_OF_WEEK)
		   == Calendar.SUNDAY || nextWeekDay.get(Calendar.DAY_OF_WEEK)
		   == Calendar.SATURDAY);
			return nextWeekDay;
	}
}


テストクラス

public class DateUtilTest extends TestCase {

	private DateUtil dateUtil;
	private SystemDateForTest systemDate;

	protected void setUp() throws Exception {
		dateUtil = new DateUtil();
		systemDate = new SystemDateForTest();
	}

	public void testGetNextWeekDay_今日は月曜() {
		Calendar cal = Calendar.getInstance();
		cal.set(2005,Calendar.AUGUST,8);
		systemDate.setToday(cal);
		dateUtil.setSysDate(systemDate);

		Calendar actual = dateUtil.getNextWeekDay();
		assertEquals(2005,actual.get(Calendar.YEAR));
	}

テストクラスで、dateUtil.setSysDate()をしてるけど、
これって、DateUtil().setSysDate()の引数の型をテストの時だけ、
SystemDateForTestに変更してテストするのですかね--;

なんかやだなー。

もうすこし他の例もみてみなくては。