我正在用word进行一些表格测试,所有的JUnit都已完成,但我在测试方法时遇到了麻烦 - 因为我是这个项目中的测试人员而不是编码器我正在努力理解什么是实际正确的
public GregorianCalendar calcDeparture(String date, String time) {
String[] calDate = new String[3];
String[] calTime = new String[2];
calDate[0] = (date.substring(0, 2)); //Dat
calDate[1] = date.substring(2, 5); //Month
calDate[2] = "20" + date.substring(5, 7); //Year
calTime = time.split(":");
//Adds the year, month and day and hour and minute from the above splited arrays
int year = Integer.parseInt(calDate[2]);
int month = monthToInt(calDate[1]);
int day = Integer.parseInt(calDate[0]);
int hour = Integer.parseInt(calTime[0]);
int minute = Integer.parseInt(calTime[1]);
GregorianCalendar newDeparture = new GregorianCalendar(year, month, day, hour, minute, 0);
return newDeparture;
}
这是我正在测试的方法。如果我将“01AUG07”14:40的值传递给我“我得到一个格里高利的压缩机,但我不知道它内部的值是否正确所以我不能勾选通过或失败的盒子。我得到了什么在BlueJ对象检查器中是一个非常长的数字:D
我可以得到一些帮助吗
感谢
答案 0 :(得分:3)
我建议使用SimpleDateFormat()
同时检查日历的所有相关值:
SimpleDateFormat f = new SimpleDateFormat ("yyyy-MM-dd HH:mm");
String s = f.format (calcDeparture(yourDate, yourTime));
assertEquals ("2007-08-01 14:40", s);
现在用奇数日期(如2001年12月31日,2001年2月29日,等等)调用你的方法,看看你得到了什么,以及你应该如何处理错误。
答案 1 :(得分:2)
Calendar
(这是GregorianCalendar
的超类型)有get
方法,你可以使用它:
Calendar calendar = calcDeparture(yourDate, yourTime);
int day = calendar.get(Calendar.DAY_OF_YEAR);
int moth = calendar.get(Calendar.MONTH); //this is 0 based;
依此类推
答案 2 :(得分:0)
为什么你不能使用标准的getter来检查各个字段,如下所示:
Calendar cal = calcDeparture("01AUG07", "14:40");
if (cal.get(Calendar.YEAR) != 2007) { ... }