Junior — Middle
Welke stappen moeten worden ondernomen om de afhankelijkheid van een klasse weg te nemen bij het schrijven van een unittests?
sobes.tech AI
Antwoord van AI
Для устранения зависимости класса при написании юнит-теста обычно применяют следующие шаги:
-
Использование интерфейсов или абстракций вместо конкретных классов для зависимостей. Это позволяет подменять реальные реализации на тестовые.
-
Внедрение зависимостей (Dependency Injection) — передача зависимостей через конструктор, сеттеры или методы, чтобы в тестах можно было подставить моки или стабы.
-
Использование Mock-объектов с помощью библиотек, например Mockito, для имитации поведения зависимостей.
-
Избегать создания зависимостей внутри тестируемого класса напрямую (например, через
new), вместо этого получать их извне.
Пример:
public class Service {
private final Repository repository;
public Service(Repository repository) {
this.repository = repository;
}
public String getData() {
return repository.fetchData();
}
}
// В тесте
Repository mockRepo = Mockito.mock(Repository.class);
Mockito.when(mockRepo.fetchData()).thenReturn("test data");
Service service = new Service(mockRepo);
assertEquals("test data", service.getData());
Таким образом, класс становится тестируемым без зависимости от реальных реализаций.