Назад к вопросам
VK
Senior
5
Напишите JUnit тесты для RecommenderServiceImpl, покрывающие основную функциональность
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для написания JUnit тестов для класса RecommenderServiceImpl нужно покрыть основные сценарии работы сервиса: получение рекомендаций, обработку ошибок, работу с пустыми данными и т.п. Предположим, что сервис зависит от какого-то репозитория или внешнего API, тогда стоит замокать эти зависимости.
Пример теста с использованием JUnit 5 и Mockito:
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
class RecommenderServiceImplTest {
@Mock
private RecommendationRepository recommendationRepository;
@InjectMocks
private RecommenderServiceImpl recommenderService;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
void testGetRecommendations_ReturnsList() {
// Подготовка данных
List<String> mockRecommendations = List.of("item1", "item2");
when(recommendationRepository.findRecommendations(anyString())).thenReturn(mockRecommendations);
// Вызов тестируемого метода
List<String> result = recommenderService.getRecommendations("user123");
// Проверка результата
assertNotNull(result);
assertEquals(2, result.size());
assertEquals("item1", result.get(0));
}
@Test
void testGetRecommendations_EmptyList() {
when(recommendationRepository.findRecommendations(anyString())).thenReturn(Collections.emptyList());
List<String> result = recommenderService.getRecommendations("user123");
assertNotNull(result);
assertTrue(result.isEmpty());
}
@Test
void testGetRecommendations_RepositoryThrowsException() {
when(recommendationRepository.findRecommendations(anyString())).thenThrow(new RuntimeException("DB error"));
assertThrows(RuntimeException.class, () -> {
recommenderService.getRecommendations("user123");
});
}
}
В этом примере:
- Используется Mockito для мокирования зависимостей.
- Проверяется нормальная работа, пустой результат и обработка исключений.
- Можно добавить тесты для граничных случаев и других методов сервиса.