Skip to content

Commit 81db520

Browse files
quaffsnicoll
authored andcommitted
Polishing BatchAutoConfigurationTests
1. Rename `TestConfiguration` to `TestJpaConfiguration` and remove unnecessary reference. 2. Use `withBean` instead of `withUserConfiguration` to avoid new configuration class. 3. Use kebab-case for configuration key See gh-44800 Signed-off-by: Yanming Zhou <[email protected]>
1 parent f44c17c commit 81db520

File tree

1 file changed

+59
-78
lines changed

1 file changed

+59
-78
lines changed

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchAutoConfigurationTests.java

Lines changed: 59 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -113,23 +113,22 @@ class BatchAutoConfigurationTests {
113113

114114
@Test
115115
void testDefaultContext() {
116-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
117-
.run((context) -> {
118-
assertThat(context).hasSingleBean(JobRepository.class);
119-
assertThat(context).hasSingleBean(JobLauncher.class);
120-
assertThat(context).hasSingleBean(JobExplorer.class);
121-
assertThat(context).hasSingleBean(JobRegistry.class);
122-
assertThat(context).hasSingleBean(JobOperator.class);
123-
assertThat(context.getBean(BatchProperties.class).getJdbc().getInitializeSchema())
124-
.isEqualTo(DatabaseInitializationMode.EMBEDDED);
125-
assertThat(new JdbcTemplate(context.getBean(DataSource.class))
126-
.queryForList("select * from BATCH_JOB_EXECUTION")).isEmpty();
127-
});
116+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class).run((context) -> {
117+
assertThat(context).hasSingleBean(JobRepository.class);
118+
assertThat(context).hasSingleBean(JobLauncher.class);
119+
assertThat(context).hasSingleBean(JobExplorer.class);
120+
assertThat(context).hasSingleBean(JobRegistry.class);
121+
assertThat(context).hasSingleBean(JobOperator.class);
122+
assertThat(context.getBean(BatchProperties.class).getJdbc().getInitializeSchema())
123+
.isEqualTo(DatabaseInitializationMode.EMBEDDED);
124+
assertThat(new JdbcTemplate(context.getBean(DataSource.class))
125+
.queryForList("select * from BATCH_JOB_EXECUTION")).isEmpty();
126+
});
128127
}
129128

130129
@Test
131130
void autoconfigurationBacksOffEntirelyIfSpringJdbcAbsent() {
132-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
131+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
133132
.withClassLoader(new FilteredClassLoader(DatabasePopulator.class))
134133
.run((context) -> {
135134
assertThat(context).doesNotHaveBean(JobLauncherApplicationRunner.class);
@@ -253,7 +252,7 @@ void testDisableLaunchesJob() {
253252

254253
@Test
255254
void testDisableSchemaLoader() {
256-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
255+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
257256
.withPropertyValues("spring.datasource.generate-unique-name=true",
258257
"spring.batch.jdbc.initialize-schema:never")
259258
.run((context) -> {
@@ -270,7 +269,7 @@ void testDisableSchemaLoader() {
270269
@Test
271270
void testUsingJpa() {
272271
this.contextRunner
273-
.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class,
272+
.withUserConfiguration(TestJpaConfiguration.class, EmbeddedDataSourceConfiguration.class,
274273
HibernateJpaAutoConfiguration.class)
275274
.run((context) -> {
276275
PlatformTransactionManager transactionManager = context.getBean(PlatformTransactionManager.class);
@@ -288,11 +287,9 @@ void testUsingJpa() {
288287
@Test
289288
@WithPackageResources("custom-schema.sql")
290289
void testRenamePrefix() {
291-
this.contextRunner
292-
.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class,
293-
HibernateJpaAutoConfiguration.class)
290+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
294291
.withPropertyValues("spring.datasource.generate-unique-name=true",
295-
"spring.batch.jdbc.schema:classpath:custom-schema.sql", "spring.batch.jdbc.tablePrefix:PREFIX_")
292+
"spring.batch.jdbc.schema:classpath:custom-schema.sql", "spring.batch.jdbc.table-prefix:PREFIX_")
296293
.run((context) -> {
297294
assertThat(context).hasSingleBean(JobLauncher.class);
298295
assertThat(context.getBean(BatchProperties.class).getJdbc().getInitializeSchema())
@@ -309,7 +306,7 @@ void testRenamePrefix() {
309306
@Test
310307
void testCustomizeJpaTransactionManagerUsingProperties() {
311308
this.contextRunner
312-
.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class,
309+
.withUserConfiguration(TestJpaConfiguration.class, EmbeddedDataSourceConfiguration.class,
313310
HibernateJpaAutoConfiguration.class)
314311
.withPropertyValues("spring.transaction.default-timeout:30",
315312
"spring.transaction.rollback-on-commit-failure:true")
@@ -324,7 +321,7 @@ void testCustomizeJpaTransactionManagerUsingProperties() {
324321

325322
@Test
326323
void testCustomizeDataSourceTransactionManagerUsingProperties() {
327-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
324+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
328325
.withPropertyValues("spring.transaction.default-timeout:30",
329326
"spring.transaction.rollback-on-commit-failure:true")
330327
.run((context) -> {
@@ -338,49 +335,44 @@ void testCustomizeDataSourceTransactionManagerUsingProperties() {
338335

339336
@Test
340337
void testBatchDataSource() {
341-
this.contextRunner.withUserConfiguration(TestConfiguration.class, BatchDataSourceConfiguration.class)
342-
.run((context) -> {
343-
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class)
344-
.hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
345-
.hasBean("batchDataSource");
346-
DataSource batchDataSource = context.getBean("batchDataSource", DataSource.class);
347-
assertThat(context.getBean(SpringBootBatchConfiguration.class).getDataSource())
348-
.isEqualTo(batchDataSource);
349-
assertThat(context.getBean(BatchDataSourceScriptDatabaseInitializer.class))
350-
.hasFieldOrPropertyWithValue("dataSource", batchDataSource);
351-
});
338+
this.contextRunner.withUserConfiguration(BatchDataSourceConfiguration.class).run((context) -> {
339+
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class)
340+
.hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
341+
.hasBean("batchDataSource");
342+
DataSource batchDataSource = context.getBean("batchDataSource", DataSource.class);
343+
assertThat(context.getBean(SpringBootBatchConfiguration.class).getDataSource()).isEqualTo(batchDataSource);
344+
assertThat(context.getBean(BatchDataSourceScriptDatabaseInitializer.class))
345+
.hasFieldOrPropertyWithValue("dataSource", batchDataSource);
346+
});
352347
}
353348

354349
@Test
355350
void testBatchTransactionManager() {
356-
this.contextRunner.withUserConfiguration(TestConfiguration.class, BatchTransactionManagerConfiguration.class)
357-
.run((context) -> {
358-
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class);
359-
PlatformTransactionManager batchTransactionManager = context.getBean("batchTransactionManager",
360-
PlatformTransactionManager.class);
361-
assertThat(context.getBean(SpringBootBatchConfiguration.class).getTransactionManager())
362-
.isEqualTo(batchTransactionManager);
363-
});
351+
this.contextRunner.withUserConfiguration(BatchTransactionManagerConfiguration.class).run((context) -> {
352+
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class);
353+
PlatformTransactionManager batchTransactionManager = context.getBean("batchTransactionManager",
354+
PlatformTransactionManager.class);
355+
assertThat(context.getBean(SpringBootBatchConfiguration.class).getTransactionManager())
356+
.isEqualTo(batchTransactionManager);
357+
});
364358
}
365359

366360
@Test
367361
void jobRepositoryBeansDependOnBatchDataSourceInitializer() {
368-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
369-
.run((context) -> {
370-
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
371-
String[] jobRepositoryNames = beanFactory.getBeanNamesForType(JobRepository.class);
372-
assertThat(jobRepositoryNames).isNotEmpty();
373-
for (String jobRepositoryName : jobRepositoryNames) {
374-
assertThat(beanFactory.getBeanDefinition(jobRepositoryName).getDependsOn())
375-
.contains("batchDataSourceInitializer");
376-
}
377-
});
362+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class).run((context) -> {
363+
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
364+
String[] jobRepositoryNames = beanFactory.getBeanNamesForType(JobRepository.class);
365+
assertThat(jobRepositoryNames).isNotEmpty();
366+
for (String jobRepositoryName : jobRepositoryNames) {
367+
assertThat(beanFactory.getBeanDefinition(jobRepositoryName).getDependsOn())
368+
.contains("batchDataSourceInitializer");
369+
}
370+
});
378371
}
379372

380373
@Test
381374
void jobRepositoryBeansDependOnFlyway() {
382-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
383-
.withUserConfiguration(FlywayAutoConfiguration.class)
375+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, FlywayAutoConfiguration.class)
384376
.withPropertyValues("spring.batch.initialize-schema=never")
385377
.run((context) -> {
386378
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
@@ -396,8 +388,8 @@ void jobRepositoryBeansDependOnFlyway() {
396388
@Test
397389
@WithResource(name = "db/changelog/db.changelog-master.yaml", content = "databaseChangeLog:")
398390
void jobRepositoryBeansDependOnLiquibase() {
399-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
400-
.withUserConfiguration(LiquibaseAutoConfiguration.class)
391+
this.contextRunner
392+
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, LiquibaseAutoConfiguration.class)
401393
.withPropertyValues("spring.batch.initialize-schema=never")
402394
.run((context) -> {
403395
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
@@ -411,8 +403,7 @@ void jobRepositoryBeansDependOnLiquibase() {
411403

412404
@Test
413405
void whenTheUserDefinesTheirOwnBatchDatabaseInitializerThenTheAutoConfiguredInitializerBacksOff() {
414-
this.contextRunner
415-
.withUserConfiguration(TestConfiguration.class, CustomBatchDatabaseInitializerConfiguration.class)
406+
this.contextRunner.withUserConfiguration(CustomBatchDatabaseInitializerConfiguration.class)
416407
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class,
417408
DataSourceTransactionManagerAutoConfiguration.class))
418409
.run((context) -> assertThat(context).hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
@@ -422,7 +413,7 @@ void whenTheUserDefinesTheirOwnBatchDatabaseInitializerThenTheAutoConfiguredInit
422413

423414
@Test
424415
void whenTheUserDefinesTheirOwnDatabaseInitializerThenTheAutoConfiguredBatchInitializerRemains() {
425-
this.contextRunner.withUserConfiguration(TestConfiguration.class, CustomDatabaseInitializerConfiguration.class)
416+
this.contextRunner.withUserConfiguration(CustomDatabaseInitializerConfiguration.class)
426417
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class,
427418
DataSourceTransactionManagerAutoConfiguration.class))
428419
.run((context) -> assertThat(context).hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
@@ -431,8 +422,9 @@ void whenTheUserDefinesTheirOwnDatabaseInitializerThenTheAutoConfiguredBatchInit
431422

432423
@Test
433424
void conversionServiceCustomizersAreCalled() {
434-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
435-
.withUserConfiguration(ConversionServiceCustomizersConfiguration.class)
425+
this.contextRunner
426+
.withUserConfiguration(EmbeddedDataSourceConfiguration.class,
427+
ConversionServiceCustomizersConfiguration.class)
436428
.run((context) -> {
437429
BatchConversionServiceCustomizer customizer = context.getBean("batchConversionServiceCustomizer",
438430
BatchConversionServiceCustomizer.class);
@@ -481,8 +473,8 @@ void whenTheUserDefinesAJobNameThatDoesNotExistWithRegisteredJobFailsFast() {
481473

482474
@Test
483475
void customExecutionContextSerializerIsUsed() {
484-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
485-
.withUserConfiguration(CustomExecutionContextConfiguration.class)
476+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
477+
.withBean(ExecutionContextSerializer.class, Jackson2ExecutionContextStringSerializer::new)
486478
.run((context) -> {
487479
assertThat(context).hasSingleBean(Jackson2ExecutionContextStringSerializer.class);
488480
assertThat(context.getBean(SpringBootBatchConfiguration.class).getExecutionContextSerializer())
@@ -492,12 +484,11 @@ void customExecutionContextSerializerIsUsed() {
492484

493485
@Test
494486
void defaultExecutionContextSerializerIsUsed() {
495-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
496-
.run((context) -> {
497-
assertThat(context).doesNotHaveBean(ExecutionContextSerializer.class);
498-
assertThat(context.getBean(SpringBootBatchConfiguration.class).getExecutionContextSerializer())
499-
.isInstanceOf(DefaultExecutionContextSerializer.class);
500-
});
487+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class).run((context) -> {
488+
assertThat(context).doesNotHaveBean(ExecutionContextSerializer.class);
489+
assertThat(context.getBean(SpringBootBatchConfiguration.class).getExecutionContextSerializer())
490+
.isInstanceOf(DefaultExecutionContextSerializer.class);
491+
});
501492
}
502493

503494
private JobLauncherApplicationRunner createInstance(String... registeredJobNames) {
@@ -560,7 +551,7 @@ static class EmptyConfiguration {
560551
}
561552

562553
@TestAutoConfigurationPackage(City.class)
563-
static class TestConfiguration {
554+
static class TestJpaConfiguration {
564555

565556
}
566557

@@ -838,14 +829,4 @@ BatchConversionServiceCustomizer anotherBatchConversionServiceCustomizer() {
838829

839830
}
840831

841-
@Configuration(proxyBeanMethods = false)
842-
static class CustomExecutionContextConfiguration {
843-
844-
@Bean
845-
ExecutionContextSerializer executionContextSerializer() {
846-
return new Jackson2ExecutionContextStringSerializer();
847-
}
848-
849-
}
850-
851832
}

0 commit comments

Comments
 (0)