0

我是 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 运行正常,没有任何问题,但我有 2 个简单的问题/问题:

1) 只测试方法的正确功能是正确的,还是我也应该测试null值和/或任何特定的异常?

2) 当我使用EclEmma运行代码覆盖率时,它给了我 75% 的代码覆盖率,因为测试用例没有测试类的构造函数StringConverter。测试StringConverter类构造函数不在我的计划中,因为StringConverter该类是一个 util 类,所以它不会被实例化。有一种方法可以将其从代码覆盖范围中排除?

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

4

1 回答 1

2
  1. 为了确保您的方法是防弹的,您应该测试您能想到的所有可能的调用方式,包括使用null参数,除非您在代码上发出可怕的警告:

    永远不要使用参数调用此代码null

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

于 2013-08-11T21:47:54.473 回答