我正在编写junit测试用例并使用ECLEMMA来检查单元测试覆盖率。 我在ServerClass.class中有以下代码 此类正在设置服务器的状态。
public class ServerClass{
private boolean isStarted;
public static final String MESSAGE_START = "Started";
private void setStarted( boolean isStarted ) {
this.isStarted = isStarted;
}
public String start() {
setStarted( true );
return ServerClass.MESSAGE_START;
}
}
我的测试类中有一个测试用例:
@Test
public void startTest(){
ServerClass serverClass = new serverClass ();
assert("Started".equals( serverClass. start() )); // 3 of 4 branches missed
}
在eclipse中,运行eclemma后,我在assert语句中得到一个黄点,代码覆盖率很低。 请帮助我理解覆盖逻辑和解决方案。
答案 0 :(得分:3)
检查某些内容是否为真的JUnit方法名为assertTrue()
,而不是assert()
。 assert()
是本机Java断言,如果未启用断言,则不会执行。
答案 1 :(得分:0)
尝试为setStarted添加测试:
@Test
public void setStarted(){
ServerClass serverClass = new serverClass ();
serverClass.setStarted(false);
//assert a getter for isStarted (not in your example)
assert (serverClass.isStarted() == false);
}