我有一个片段如下
public void setTarget(String target) throws TargetException{
if(target = null){
throw new TargetException();
}
this.target = target;
}
public void getTarget(){
return this.target;
}
我正在测试上面的代码段
@Test(expected = TargetException.class)
public void testTargetSetting() throws TargetException{
//For coverage of code in if loop
String target = null;
MyBean.setTarget(target);
//For coverage of code in else loop
target="abc";
MyBean.setTarget(target);
}
现在上面代码的问题是要测试的类的代码覆盖率显示100%即方法setTarget。它同时包含if和else块。但是不包括测试类方法的覆盖范围,即testTargetSetting。它总是以红色显示。
我正在使用Emma进行代码覆盖。任何想法如何满足实际类方法和测试类方法的代码覆盖率。
注意:上面给出的代码仅用于说明。
答案 0 :(得分:2)
要覆盖测试类,您必须为测试类编写测试类。要覆盖该类,您必须为测试类编写测试类的测试类。
简单地说,像Emma这样的工具并不意味着要在测试类上显示覆盖范围。他们使用您的测试类来显示常规课程的覆盖范围。
答案 1 :(得分:1)
好吧,您的测试方法未经过完全测试,因为您运行的测试会在另一个测试之前抛出异常。您的测试框架需要异常,因此测试不会失败。但是,行
target="abc";
MyBean.setTarget(target);
未执行。
另外三个想法: