jUnit和DateFormat(EclEmma代码覆盖率)

时间:2013-08-11 21:41:52

标签: java junit junit4 emma eclemma

我是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类,因此它不会被实例化。有一种方法可以将其排除在代码覆盖范围之外吗?

任何建议都将不胜感激。 感谢。

1 个答案:

答案 0 :(得分:2)

  1. 为了确保您的方法是防弹的,您应该测试每种可能的方法来调用它,包括使用null参数,除非您在方法上发出可怕的警告代码说:

      

    请勿使用null论据来调用此代码。

  2. 如果它是只带有静态方法的实用程序类,则无参数构造函数应为private,类应为final,以强调此事实。那么也许会让你一个人呆着,特别是如果这个构造函数是空的。