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に変更してテストするのですかね--;
なんかやだなー。
もうすこし他の例もみてみなくては。