У меня проблемы с загрузкой контекста приложения из тестов junit для моих весенних пакетных тестов.Я ссылался на весеннюю документацию https://docs.spring.io/spring-batch/trunk/reference/html/testing.html, а также на любую доступную информацию, которую я мог найти в Интернете, но все еще не мог получить простую работу по тестированию джунтов.
Я использую аннотации для загрузки контекста приложения, код приведен ниже.Моя цель - уметь тестировать отдельные шаги.
Я также клонировал некоторые примеры из Интернета, но при запуске на моем локальном компьютере они выдают ту же ошибку - невозможно загрузить контекст приложения ... это заставило меня задуматься о том, как эти тесты должны выполняться?Run As -> junit tests - это то, как все модульные тесты выполняются ... не так ли?
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {BatchProcessingConfiguration.class, RestTemplateConfig.class, SftpConfig.class, DbConfig.class, RuntimeSessionFactoryLocator.class},
loader = AnnotationConfigContextLoader.class)
public class BatchProcessingJobApplicationTests extends AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
dataSource.setUrl("url");
dataSource.setUsername("username");
dataSource.setPassword("password");
return dataSource;
}
@Test
public void testJob() throws Exception {
JobExecution jobExecution = jobLauncherTestUtils.launchJob();
Assert.assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode());
}
}
Код взят из весенней документации.
Я новичок в этом деле.Спасибо за вашу помощь.
Stacktrace:
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
... ...
РАБОЧИЙ КОД:
@RunWith(SpringRunner.class)
@SpringBatchTest
@ContextConfiguration(classes = {BatchProcessingJobApplication.class, DataSourceConfiguration.class, JobconfigurationTest.class, BatchProperties.class}, initializers=ConfigFileApplicationContextInitializer.class)
@ActiveProfiles("test")
public class BatchProcessingJobApplicationTests {
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
@Test
public void testStep() throws Exception {
// given
JobParameters jobParameters = jobLauncherTestUtils.getUniqueJobParameters();
// when
JobExecution jobExecution = jobLauncherTestUtils.launchStep("jobName", jobParameters);
// then
Assert.assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
}
}
public class DataSourceConfiguration {
@Bean
public DataSource dataSource(){
SQLServerConnectionPoolDataSource dataSource = new SQLServerConnectionPoolDataSource();
dataSource.setURL(url);
dataSource.setUser(username);
dataSource.setPassword(password);
return dataSource;
}
}
@Configuration
public class JobconfigurationTest {
@Bean
public JobLauncherTestUtils jobLauncherTestUtils() {
return new JobLauncherTestUtils();
}
}
Надеюсь, это кому-нибудь поможеткак я.