开发者

Stuck on testing a method

开发者 https://www.devze.com 2022-12-16 13:48 出处:网络
I am doing some table testing in word, all of the JUnits are done but i am having trouble testing a method - as i am the tester in this project and not the coder i am s开发者_JS百科truggling to unders

I am doing some table testing in word, all of the JUnits are done but i am having trouble testing a method - as i am the tester in this project and not the coder i am s开发者_JS百科truggling to understand what is actually correct or not

   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;
    }

This is the method I am testing. If i pass it the values of "01AUG07 "14:40" i get a gregorian calander back but i don't know if the values inside of it are correct so i can't tick the passed or failed box. What i get back in the BlueJ object inspector is a load of really long numbers :D

can i get some help please

thanks


I suggest to check all the relevant values of the calendar at the same time using a SimpleDateFormat() like so:

SimpleDateFormat f = new SimpleDateFormat ("yyyy-MM-dd HH:mm");
String s = f.format (calcDeparture(yourDate, yourTime));
assertEquals ("2007-08-01 14:40", s);

Now call your method with odd dates (like 31.12.2999, August 45th, February 29th 2001, etc) to see what you get and how you should handle errors.


  1. BlueJ? Consider using an IDE, not an educational software
  2. The method is terribly written - working with dates using a strictly-formatted String is wrong.
  3. Calendar (which is the supertype of GregorianCalendar) has the get method, which you can use like:

    Calendar calendar = calcDeparture(yourDate, yourTime);
    int day = calendar.get(Calendar.DAY_OF_YEAR);
    int moth = calendar.get(Calendar.MONTH); //this is 0 based;
    

    and so on


Why can you just not use the standard getters to check the individual fields, along the lines of:

Calendar cal = calcDeparture("01AUG07", "14:40");
if (cal.get(Calendar.YEAR) != 2007) { ... }
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号