在单元测试中如何覆盖所有分支

时间:2015-03-08 13:33:26

标签: java junit eclemma

我正在编写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语句中得到一个黄点,代码覆盖率很低。 请帮助我理解覆盖逻辑和解决方案。

2 个答案:

答案 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);
}