Как принудительно вызвать SQLException при модульном тестировании в Java? - PullRequest
0 голосов
/ 12 июня 2018

Я запускаю тесты Java на JUnit 4.xx.Я пытаюсь принудительно запустить SQLException из блока try.Я запускал Mockito по-разному, но не получил желаемого результата.

Вот мой основной файл:

public boolean close()   {

    if (connection == null) {
        throw new IllegalStateException("Connection never initialized!");
    }

    try {
        connection.close();
        return true;
    }

    catch (SQLException e)
    {
        LOGGER.logp(Level.INFO, CLASS_NAME, "close", e.getMessage());
        return false;
    }

}

Вот мой тестовый файл:

@Test
public void testFail2() throws SQLException {

    JDBCConnection spyConnect = mock(JDBCConnection.class);

    given(spyConnect.getConnection()).willAnswer(invocationOnMock -> new SQLException());

    assertFalse(spyConnect.close());
}

В заключениеКак заставить выполниться блок catch, чтобы я получил 100% -ное покрытие строки для всей моей программы?Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 12 июня 2018

Если вы хотите, чтобы ваша макет выдал исключение, вы должны использовать willThrow, а не willAnswer:

given(spyConnect.getConnection()).willThrow(new SQLException());
...