Автор оригинала: Pankaj Kumar.
Иногда наши методы создают исключения, и мы хотим поиздеваться над объектом и проверить исключения. Мы можем использовать макетные объекты Mockito с когда() и затем бросить () , чтобы поиздеваться над этим сценарием.
Исключение заглушки Mockito – JUnit 5
Давайте рассмотрим простой пример, в котором мы будем издеваться над нашим методом объекта, чтобы создать исключение. Тогда мы будем использовать JUnit 5 assertThrows для проверки исключения и его сообщения.
package com.journaldev.mockito.examples;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.List;
import org.junit.jupiter.api.Test;
class JUnitMockitoStubExceptions {
@SuppressWarnings("unchecked")
@Test
void test() {
List list = mock(List.class);
when(list.size()).thenThrow(new RuntimeException("size() method not supported"));
Exception exception = assertThrows(RuntimeException.class, () -> list.size());
assertEquals("size() method not supported", exception.getMessage());
}
}
Для простоты я издеваюсь над интерфейсом списка. Аналогично, мы можем издеваться и над любым другим объектом и указывать его поведение, чтобы создавать исключение при вызове определенного метода.
Исключение заглушки Mockito – TestNG
Если вы используете TestNG фреймворк, то мы можем использовать assert/| утверждение.
@Test
void test() {
List list = mock(List.class);
when(list.size()).thenThrow(new RuntimeException("size() method not supported"));
assertThrows(RuntimeException.class, () -> list.size());
}
Если мы также хотим проверить сообщение об исключении, мы можем использовать аннотацию @Test expectedexception и expectedExceptionsMessageRegExp атрибуты.
@Test(expectedExceptions = RuntimeException.class, expectedExceptionsMessageRegExp = "size method not supported")
void test1() {
List list = mock(List.class);
when(list.size()).thenThrow(new RuntimeException("size method not supported"));
list.size();
}