Модульное тестирование публичного метода с частными вспомогательными методами внутри него? - PullRequest
0 голосов
/ 09 мая 2019

Когда я пытаюсь выполнить тестовую разработку в моем приложении JSF, мне трудно понять, как сделать мои классы более тестируемыми и отделенными. Например:

@Test
public void testViewDocumentReturnsServletPath(){
    DocumentDO doc = new DocumentDO();
    doc.setID(7L);
    doc.setType(“PDF”);
    DocumentHandler dh = new DocumentHandler(doc);
    String servletPath = dh.viewDocument();
    assertTrue(servletPath, contains(“../../pdf?path=“);
}

Это только для тестирования (с моими текущими знаниями), если я удалю некоторые из поддерживаемых приватных методов внутри viewDocument (), которые предназначены для взаимодействия с внешними ресурсами, такими как БД.

Как я могу провести модульное тестирование общедоступного API с помощью этих поддерживающих приватных методов внутри?

1 Ответ

4 голосов
/ 09 мая 2019

Модульное тестирование обычно включает в себя макетирование внешних зависимостей, на которые опирается функция для получения контролируемого вывода.Это означает, что если ваш закрытый метод выполняет вызов API, вы можете использовать такую ​​среду, как Mockito, для принудительного определения определенного возвращаемого значения, которое затем можно использовать, чтобы гарантировать, что ваш код обрабатывает значение так, как вы ожидаете.Например, в Mockito это будет выглядеть следующим образом:

when(someApiCall).thenReturn(someResource);

Эта же структура сохраняется, если вы хотите взаимодействовать с базой данных или любым другим внешним ресурсом, который тестируемый метод не контролирует.

...