2014-07-16 103 views
-1

我有以下方法返回类型为date的值。如何使用JUnit测试方法?

1)我需要使用JUnit来测试结果,但问题是我不知道如何为我的JUnit方法的expResult变量赋值。

2)另一个问题是,如果我想测试一个无效输入的方法,我应该定义一个新的测试方法,或者我应该在同一个方法中提供错误和正确的输入?

public Date convertStringToDate(String date) { 
     try { 
      Date convertedDate = new SimpleDateFormat("yyyy-MM-dd").parse(date); 
      return convertedDate; 
     } catch (ParseException p) { 
      System.err.println(p.getMessage()); 
     } 
     return null; 
    } 


    @Test 
    public void testConvertStringToDate() { 
     System.out.println("convertStringToDate"); 
     String date = "Tue Apr 29 00:00:00 EST 2014"; 
     DateProcess instance = new DateProcess(); 
     Date expResult = null; 
     Date result = instance.convertStringToDate(date); 
     assertEquals(expResult, result); 

    } 
+0

是不是您在执行测试之前期待的结果expResult? – SaintLike

回答

1

使用日历类来创建日期对象。

设置日历对象并为其分配预期的时间,然后调用其getTime方法。

Calendar rightNow = Calendar.getInstance(); 
rightNow.set(year, month, date, hourOfDay, minute, second); 
expectedData = rightNow.getTime(); 

其中时间参数是ints。获取时间应该返回你想要的自定义日期。如果有些事情不清楚,请查看API获取更多信息http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

要回答第二个问题:我会亲自定义一种新方法。无效输入是一个不同的测试用例。

+0

问题是关于日期而不是时间。你会举个例子吗?也请回答第二个问题。 – Jack

+1

即将提供相同的解决方案。有了这个,你可以建立一个日期。 – Daren

+0

为什么不像我在我的方法中那样使用Date和SimpleDateFormat? – Jack