【发布时间】: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);行/指令...而不是您测试/预期的例外。