-1

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

4

2 回答 2

3

检查某事是否属实的 JUnit 方法是命名assertTrue()的,而不是命名的assert()assert()是原生 Java 断言,如果未启用断言,则不会执行。

于 2015-03-08T13:57:47.450 回答
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);
}
于 2015-03-08T13:50:23.683 回答