我是jUnit的新手,我正在努力深入了解它。我在网上搜索但没有发现任何可以解决的问题。
这是代码:
public class StringConverter {
public static String formatDate(Date date) {
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
return sdf.format(date);
}
}
这是jUnit4测试用例:
public class StringConverterTest {
@Test
public void testFormatDate() {
Calendar calendar = new GregorianCalendar(2013, 02, 13, 8, 30, 00);
assertEquals("13/03/2013 08:30:00", StringConverter.formatDate(calendar.getTime()));
}
}
TestCase正常运行没有任何问题,但我有两个简单的问题:
1)仅测试方法的正确功能是正确的,还是应该测试null
值和/或任何特定异常?
2)当我使用 EclEmma 运行代码覆盖时,它给了我75%的代码覆盖率,因为测试用例没有测试StringConverter
类的构造函数。测试StringConverter
类构造函数不在我的计划中,因为StringConverter
类是一个util类,因此它不会被实例化。有一种方法可以将其排除在代码覆盖范围之外吗?
任何建议都将不胜感激。 感谢。
答案 0 :(得分:2)
为了确保您的方法是防弹的,您应该测试每种可能的方法来调用它,包括使用null
参数,除非您在方法上发出可怕的警告代码说:
请勿使用
null
论据来调用此代码。
如果它是只带有静态方法的实用程序类,则无参数构造函数应为private
,类应为final
,以强调此事实。那么也许emma会让你一个人呆着,特别是如果这个构造函数是空的。