Senior
56
Scrie teste JUnit pentru RecommenderServiceImpl care acoperă funcționalitatea principală
Companiile au fost întrebate
Răspuns de la AI
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 для мокирования зависимостей.
- Проверяется нормальная работа, пустой результат и обработка исключений.
- Можно добавить тесты для граничных случаев и других методов сервиса.