У меня есть реализация ApplicationRunner с именем RefAppRunner, которая выполняет некоторую логику.
Я хотел бы написать модульный тест на основе SpringBoot для проверки этого ApplicationRunner code> ведет себя так, как ожидалось, в зависимости от получаемых им ApplicationArguments.
Реализация также имеет несколько полей @Autowired.
Каков рекомендуемый способ модульного тестирования такого компонента в приложении Spring Boot?
Я хочу, чтобы весь контекст на основе Spring инициализировался так, как будто приложение запускается правильно, но я хочу для предоставления вариантов ApplicationArguments
Существует ли рекомендуемый способ написания таких тестов?
Я закомментировал @SpringBootTest потому что, если он включен, то пользовательский ApplicationRunner будет вызван до вызова тестового метода run.. это означает, что нет контроля над значениями, передаваемыми в реализацию.
Вот мой текущий модульный тест Java в проекте Spring Boot:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.DefaultApplicationArguments;
import org.springframework.boot.test.context.SpringBootTest;
//@SpringBootTest
public class RefAppRunnerTest
{
@Autowired
private RefAppRunner refAppRunner;
@Test
public void run() throws Exception {
refAppRunner.run(new DefaultApplicationArguments(new String[]{}));
}
}
RefAppRunner — это реализация ApplicationRunner:
@Component
public class RefAppRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
// ..
}
}
Но я получаю следующую ошибку:
java.lang.NullPointerException: Cannot invoke "com.apps.referenceapp.RefAppRunner.run(org.springframework.boot.ApplicationArguments)" because "this.refAppRunner" is null
at com.apps.referenceapp.RefAppRunnerTest.run(RefAppRunnerTest.java:16)
Подробнее здесь: https://stackoverflow.com/questions/784 ... er-impleme
Лучшая практика написания модульного теста пользовательской реализации Spring ApplicationRunner и передачи в нее вариант ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Изящно прекращение Autobahn ApplicationRunner (). Run () с использованием сигнала.
Anonymous » » в форуме Python - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-