У меня есть обработчик файлов для Spring Batch, который я хочу проверить.Как сделать Mock SpringApplication.run
SpringApplication.run()
- статический метод, для которого я хотел бы проверить переданные ему аргументы.
Означает ли это, что мне нужно спуститься по пути PowerMock или есть что-то в SpringFramework, которое позволит мне проверить это?
public File handleFile(File file) {
// Start the Batch Process and set the inputFile parameter
String[] args = {"--inputFile=" + file.getAbsolutePath()};
SpringApplication.run(InitialFileBatchApplication.class, args);
return null;
}
Мой тестовый класс имеет следующие аннотации, которые не кажется ли работать:
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
@SpringBootTest
@PrepareForTest(SpringApplication.class)
Что мне не хватает?
Исключение получение выброшен является:
java.lang.IllegalStateException: Не удалось преобразовать класс с именем org.springframework.boot.SpringApplication. Причина: не может найти org.springframework.web.context.support.StandardServletEnvironment
Это происходит, когда @PrepareForTest(SpringApplication.class)
обрабатывается. Я тестирую приложение Spring Batch, поэтому нет веб-среды, и я также добавил.
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
Idealling насмешливого SpringApplication.run является то, что я хочу сделать, но это не значит, что я должен быть architecturing этого класса по-разному, так что его проверяемое. Из моего тестового класса теперь у меня есть следующие аннотации, но все еще получаю исключение выше. @RunWith (PowerMockRunner.class) @PowerMockRunnerDelegate (SpringRunner.class) @PrepareForTest (SpringApplication.class) @SpringBootTest (webEnvironment = WebEnvironment.NONE) @TestPropertySource (свойства = { "spring.batch.job.enabled = ложь "}) –