Java 坚持测试一种方法
我正在用word做一些表格测试,所有的JUnit都已经完成了,但是我在测试一个方法时遇到了困难——因为我是这个项目中的测试人员,而不是程序员,我正在努力理解什么是真正正确的或不正确的Java 坚持测试一种方法,java,junit,Java,Junit,我正在用word做一些表格测试,所有的JUnit都已经完成了,但是我在测试一个方法时遇到了困难——因为我是这个项目中的测试人员,而不是程序员,我正在努力理解什么是真正正确的或不正确的 public GregorianCalendar calcDeparture(String date, String time) { String[] calDate = new String[3]; String[] calTime = new String[2];
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
我能得到一些帮助吗
谢谢为什么不能使用标准的getter来检查各个字段,如下所示:
Calendar cal = calcDeparture("01AUG07", "14:40");
if (cal.get(Calendar.YEAR) != 2007) { ... }
为什么不能使用标准getter来检查各个字段,如下所示:
Calendar cal = calcDeparture("01AUG07", "14:40");
if (cal.get(Calendar.YEAR) != 2007) { ... }
考虑使用IDE,而不是教育软件
Calendar
(它是gregoriacalendar
的超类型)有get
方法,您可以像这样使用:
Calendar calendar = calcDeparture(yourDate, yourTime);
int day = calendar.get(Calendar.DAY_OF_YEAR);
int moth = calendar.get(Calendar.MONTH); //this is 0 based;
等等Calendar
(它是gregoriacalendar
的超类型)有get
方法,您可以像这样使用:
Calendar calendar = calcDeparture(yourDate, yourTime);
int day = calendar.get(Calendar.DAY_OF_YEAR);
int moth = calendar.get(Calendar.MONTH); //this is 0 based;
等等我建议同时使用
SimpleDataFormat()
检查日历的所有相关值,如下所示:
SimpleDateFormat f = new SimpleDateFormat ("yyyy-MM-dd HH:mm");
String s = f.format (calcDeparture(yourDate, yourTime));
assertEquals ("2007-08-01 14:40", s);
现在用奇数日期(如31.12.2999、8月45日、2001年2月29日等)调用您的方法,查看您得到了什么以及如何处理错误。我建议同时使用
SimpleDateFormat()
检查日历的所有相关值,如下所示:
SimpleDateFormat f = new SimpleDateFormat ("yyyy-MM-dd HH:mm");
String s = f.format (calcDeparture(yourDate, yourTime));
assertEquals ("2007-08-01 14:40", s);
现在用奇数日期(如31.12.2999、8月45日、2001年2月29日等)调用您的方法,看看您得到了什么以及应该如何处理错误。我的印象是,您实际的问题是“如何检查GregorianCalendar实例代表的日期/时间?”?“GregorianCalendar的javadoc对此进行了详尽的描述。为什么该方法被称为calcDeparture?它只解析日期字符串。实际上,根本不需要这个方法。您正在测试它……我得到的印象是,您的实际问题是“如何检查GregorianCalendar实例表示的日期/时间?”GregorianCalendar的javadoc对此进行了详细描述。为什么称为calcDeparture的方法?它只解析日期字符串。实际上,根本不需要这个方法。您正在测试它…@OP:请告知原始开发人员SimpleDataFormat类及其用法。他/她可能会在他/她这个月的工资中给你一份不错的薪水。如果没有,那么您至少可以喝杯啤酒。@OP:您与原始开发人员共享此测试代码,并且此方法很可能不再存在供您测试。@OP:请告知原始开发人员SimpleDataFormat类及其用法。他/她可能会在他/她这个月的工资中给你一份不错的薪水。如果没有,那么您肯定至少可以喝杯啤酒。@OP:您与原始开发人员共享此测试代码,并且此方法很可能不再存在供您测试。