Senior
55
Napišite JUnit testove za RecommenderServiceImpl koji pokrivaju osnovnu funkcionalnost
Компаније где су питане
Одговор од АИ
sobes.tech АИ
Для написания 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 для мокирования зависимостей.
- Проверяется нормальная работа, пустой результат и обработка исключений.
- Можно добавить тесты для граничных случаев и других методов сервиса.