2015-03-08 3 views
-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 
} 

В затмении, после запуска EclEmma, ​​я получаю желтую точку в заявлении утверждают, и покрытие кода является низким. Пожалуйста, помогите мне в понимании логики покрытия и решения.

+0

Сообщение ** настоящий ** код и снимок экрана о том, что вы получаете. –

ответ

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); 
} 
+0

setStarted является закрытым. – technicalworm

+0

Вы можете защитить его, и я думаю, что JUnit может получить к нему доступ. Кроме того, можете ли вы показать, какие ветки пропущены? – JFPicard

3

Метод JUnit, чтобы проверить, что что-то верно называют assertTrue(), не assert(). assert() - это собственное Java-утверждение, которое не будет выполнено, если утверждения не включены.