Доброго времени суток.
Подскажите пожалуйста, как написать тест в junit - ловлю ожидаемое исключение
Исходный код метода:
private ArrayList<String> parseURL(ArrayList<String> urls) throws ServerException {
ArrayList<String> urlsAndTexts = new ArrayList<>();
if(urls == null) {
return urlsAndTexts;
}
Document htmlDocument = null;
for(String url : urls) {
String bodyTagText;
if(!url.contains("https://")) {
url = "https://" + url;
}
try {
htmlDocument = Jsoup.connect(url).get();
} catch (SocketException e) {
throw new ServerException("Invalid url parsing: " + url, e);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
bodyTagText = htmlDocument.body().text();
} catch (NullPointerException e) {
bodyTagText = null;
}
urlsAndTexts.add(bodyTagText);
}
return urlsAndTexts;
}
Пытаюсь написать unit-тест, где ожидаю исключение ServerException
@Test
void whenParseNotUrls_thenReturnException() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
ArrayList<String> urls = new ArrayList<>();
urls.add("123");
urls.add("abc");
urls.add("абв");
Method method = URLService.class.getDeclaredMethod("parseURL", ArrayList.class);
method.setAccessible(true);
ArrayList<String> strings = (ArrayList<String>)method.invoke(urlService, urls);
ServerException thrown = Assertions.assertThrows(ServerException.class() -> {
//Code under test
});
Assertions.assertEquals("some message", exception.getMessage());
}
Никак не могу побороть синтаксис junit + mockito. Можете подсказать, как будет правильно. А я по аналогии сделаю другие тесты