坚持测试方法

时间:2010-01-11 12:56:42

标签: java junit

我正在用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

我可以得到一些帮助吗

感谢

3 个答案:

答案 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)

  1. BlueJ的?考虑使用IDE,而不是教育软件
  2. 该方法非常简单 - 使用严格格式化的String处理日期是错误的。
  3. 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) { ... }