当前位置: 首页 > 知识库问答 >
问题:

JUnit和DateFormat(EclEmma代码覆盖)

魏风华
2023-03-14

我是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个答案

熊博远
2023-03-14

>

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

如果它是一个只包含静态方法的实用类,那么无参数构造函数应该是private,类应该是final,以强调这一事实。也许emma会让你一个人呆着,尤其是如果这个构造函数是空的。

 类似资料:
  • 问题内容: 我已经配置了EclEmma,使其无法正常运行我的单元测试。但是,编辑器仍会突出显示未涵盖的测试代码。我不希望单元测试中突出显示,因为它们没有检测到覆盖率。我怎样才能做到这一点? 问题答案: 我做了以下步骤: 转到 “首选项”- >“ Java”->“代码覆盖率”,然后 将 “仅路径条目匹配” 选项设置为 看来效果很好。

  • 问题内容: 我们正在将EasyMock和PowerMock与JUnit一起使用。使用的覆盖率工具是ECLEmma。使用EasyMock,它会以绿色正确显示覆盖范围(已覆盖)。但是,对于使用PowerMock进行了单元测试的代码,覆盖范围显示为红色(未覆盖)。在网络上阅读过类似的问题。但是,只想检查是否有解决方案。 谢谢 Venkatesh 问题答案: 这是一个已知的问题:https : //git

  • 我在单元测试中使用ByteBuddy重新定义类。我在每次测试后重置类,以确保测试之间没有串扰。 只要在EclipseIDE中运行测试,或者使用maven命令行运行,ByteBuddy就可以正常工作。但如果它在Eclipse中运行并覆盖,重置该类会导致以下异常: 下面是一个示例测试,它通过默认的JUnit运行程序,但在Eclipse中使用代码覆盖运行时失败。下面是失败的完整堆栈跟踪。 我使用的是By

  • 我正试图使用Eclipse和EclEmma在java中覆盖我的代码。 我的测试使用JUnit 4,我有一些测试看起来像这样: EclEmma说测试失败是因为抛出了一个IllegalArgumentExc0019。所以它会丢弃我的代码覆盖率指标,即使它应该抛出一些东西。有没有一个选项可以让它看到JUnit期望的异常标签? 编辑:我发现,如果您将抛出添加到测试声明中,它也可以工作!

  • 我不熟悉java、Junit和jacoco。我正在做下面的异常处理。我也在捕获异常类,以防该方法抛出之前未捕获的任何其他异常。 在Junit测试中,尝试如下。当我有运行时的任何异常时,我抛出的总是运行时异常捕获块本身,除非我抛出异常。我可以尝试其他哪个选中的异常,使其进入异常捕获块。因此,我无法获得所需的代码覆盖率。 谢谢你的帮助。

  • 代码覆盖是查找未被测试执行的代码区域的过程。不过要记住的是这并不能说明你测试代码的有效性。 在requirements.txt文件中添加依赖包: coverage==4.4.2 然后,我们在manage.py中新增一个命令: import coverage COV = coverage.coverage( branch=True, include='project/*',