【问题标题】:eclemma 1 of 2 branch not covered in JunitJunit 中未涵盖的 eclemma 1 of 2 分支
【发布时间】:2015-05-13 23:22:32
【问题描述】:

JUnit 文件

public class SomeClassTest {
    ...
    @Test
    public void testSomeContextFailure() throws Exception {
        SomeClass sc = new SomeClass();
        try {
            sc.SomeContext(null,null);
            fail("IllegalArg expected");
        } catch (IllegalArgumentException e) {}
    }

    @Test
    public void testSomeContextSuccess() throws Exception {
        SomeClass sc = new SomeClass();
        SomeContext in = new SomeContext();
        in.setName("something");
        in.setId("5");
        in.setPoints(SomePoint.X);
        try {
            assertNotNull(sc.SomeContext(in,null));
        } catch (Exception e) {}
    }
}

Java 文件

public class SomeClassTest {
    @Autowired(required = true)
    private InsuredDAO insuredDAO;

    @Override
    public context SomeContext(context c, unused u) throws Exception {
        if(c == null)
            throw new IllegalArgumentException();

        insuredDAO.increaseValue(c);
        if(c.getPoints() != null) {
            ...do something
        }
        return c;
}

在 java 文件中,if(c == null) 以黄色突出显示,并带有消息说 2 个分支中的 1 个未覆盖。

throw new IllegalArgumentException();

高亮的绿色

insuredDAO.increaseValue(c); 

这条线上下都是红色的

我错过了什么? (两者都通过了 JUnit 测试,但为什么没有涵盖)?

【问题讨论】:

  • 这一行中的异常!?
  • 什么意思? sc.SomeContext(null,null); 中发生异常;它应该在哪里抛出非法Arg异常并且它确实......问题是测试通过但覆盖范围不涵盖异常以下的任何内容
  • 不,不,我的意思是insuredDAO.increaseValue(c); 行/指令...而不是您测试/预期的例外。

标签: java junit eclemma


【解决方案1】:

可能有点太晚了,但如果其他人遇到这个......
第一:
您有两个测试,其中一个失败了。作为唯一通过的测试“null”值,eclemma 将 if 语句标记为“部分覆盖”。 -> 空值检查已经过测试,但是对于给定的对象,它不是。
它不像调试器那样工作“测试一直运行到这一行,然后它失败了,但是它在这个阶段之前所做的一切都会被分析”。 eclemma 只是分析完全运行(并成功)的测试。
第二:
在您的班级中,您有insuredDAO.increaseValue(c);,它是自动连接的。在我的测试中,我必须模拟这个对象,否则它将在该行失败并显示 NullPointerException,因为在 junit 测试中未完成自动装配,因此 insuredDAO 为空,并且方法调用将抛出 NullPointerException
不过应该会在你的 IDE 中弹出;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    相关资源
    最近更新 更多