Лучшая практика написания модульного теста пользовательской реализации Spring ApplicationRunner и передачи в нее вариантJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Лучшая практика написания модульного теста пользовательской реализации Spring ApplicationRunner и передачи в нее вариант

Сообщение Anonymous »

У меня есть реализация 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»