КАК создать тест JUnit, включающий выдачу исключений? - PullRequest
0 голосов
/ 04 мая 2019

Как проверить исключение в функции run?

 `    public void run() {
     ArrayBlockingQueue<String> bookQueue = 
     library.getBookQueue(book);
     try {
        bookQueue.take();
        try {
            updateState(State.IN_PROGRESS);
            Thread.sleep(READ_TIME_MS);
            bookQueue.put(book);
            updateState(State.ENDED);
        } catch(InterruptedException e){
            bookQueue.put(book);
        }
    } catch(InterruptedException e) {
        Thread.currentThread().interrupt();
    }
    finally {
        updateState(State.ENDED);
    }
   }`

1 Ответ

1 голос
/ 04 мая 2019

В аннотации @Test вы можете указать ожидаемое исключение

Например

@Test(expected=IndexOutOfBoundsException.class) 
 public void outOfBounds() {
   new ArrayList<Object>().get(1);
}

Таким же образом вы можете написать тестовый метод и вызвать run метод внутри него

@Test(expected=Exception.class) 
 public void testRun() {
   run();
}

Мы также можем сделать это лучше, рассмотрев @ GhostCat suggestions in the comments, you can add try-catch` в методе теста

@Test
 public void testRun() {
    tyr {
       run();
      Asserts.fail(); // 
      }
     catch(Exception ex) {
      assertTrue(//some condition);
      assertEquals(//some condition);
     }
 }

Если run() методне выдает никаких исключений, проверка не будет выполнена из-за Asserts.fail(), или в любом случае исключения catch будут выполнены операторы блока assert

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...