Spring Boot Integration
Dependencies
kotlin
dependencies {
testImplementation(platform("io.github.seijikohara:db-tester-bom:VERSION"))
testImplementation("io.github.seijikohara:db-tester-junit-spring-boot-starter")
}groovy
dependencies {
testImplementation platform("io.github.seijikohara:db-tester-bom:VERSION")
testImplementation "io.github.seijikohara:db-tester-spock-spring-boot-starter"
}kotlin
dependencies {
testImplementation(platform("io.github.seijikohara:db-tester-bom:VERSION"))
testImplementation("io.github.seijikohara:db-tester-kotest-spring-boot-starter")
}Automatic DataSource Discovery
All three starters share the same auto-configuration behavior via db-tester-spring-support:
- Detect the Spring
ApplicationContext - Find
DataSourcebeans - Resolve the default
DataSourceusing the following priority:- Single
DataSourcebean (automatic default) @Primary-annotatedDataSourceDataSourcebean named"dataSource"
- Single
- Register all beans with
DataSourceRegistry
Manual DataSource registration is not required. The starter handles registration automatically.
Extension Registration
java
@SpringBootTest
@ExtendWith(SpringBootDatabaseTestExtension.class)
class UserRepositoryTest {
@Test
@DataSet
@ExpectedDataSet
void testCreateUser() {
// DataSource automatically registered from Spring context
}
}groovy
@SpringBootTest
@SpringBootDatabaseTest
class UserRepositorySpec extends Specification {
@DataSet
@ExpectedDataSet
def 'should create user'() {
// DataSource automatically registered from Spring context
}
}kotlin
@SpringBootTest
class UserRepositorySpec : AnnotationSpec() {
init {
extensions(SpringBootDatabaseTestExtension())
}
@Test
@DataSet
@ExpectedDataSet
fun `should create user`() {
// DataSource automatically registered from Spring context
}
}| Framework | Registration Method |
|---|---|
| JUnit | @ExtendWith(SpringBootDatabaseTestExtension.class) |
| Spock | @SpringBootDatabaseTest (annotation-driven extension) |
| Kotest | init { extensions(SpringBootDatabaseTestExtension()) } |
Multiple DataSources
For multiple data sources, define beans with @Primary and @Qualifier:
java
@Configuration
class DataSourceConfig {
@Bean
@Primary
DataSource primaryDataSource() { }
@Bean
@Qualifier("secondary")
DataSource secondaryDataSource() { }
}Reference named data sources in annotations:
java
@Test
@DataSet(sources = {
@DataSetSource(dataSourceName = ""), // Primary (default)
@DataSetSource(dataSourceName = "secondary") // Secondary
})
void testMultipleDatabases() { }Configuration Properties
Configure via application.properties or application.yml. All properties apply to all three starters.
properties
# Enable or disable DB Tester (default: true)
db-tester.enabled=true
# Auto-register DataSource beans (default: true)
db-tester.auto-register-data-sources=true
# Data format (AUTO, CSV, TSV, JSON, or YAML)
db-tester.convention.data-format=AUTO
# Expectation directory suffix
db-tester.convention.expectation-suffix=/expected
# Scenario marker column name
db-tester.convention.scenario-marker=[Scenario]
# Table merge strategy (FIRST, LAST, UNION, UNION_ALL)
db-tester.convention.table-merge-strategy=UNION_ALL
# Default preparation operation
db-tester.operation.preparation=CLEAN_INSERT
# Default expectation operation (typically NONE for verification only)
db-tester.operation.expectation=NONEProperty names use singular form (convention, operation).
Auto-Configuration Classes
| Module | Auto-Configuration Class |
|---|---|
| JUnit Starter | DbTesterJUnitAutoConfiguration |
| Spock Starter | DbTesterSpockAutoConfiguration |
| Kotest Starter | DbTesterKotestAutoConfiguration |
Related Specifications
- Test Frameworks Overview - Supported frameworks summary
- JUnit - JUnit integration
- Spock - Spock integration
- Kotest - Kotest integration
- Lifecycle - Lifecycle hooks and executor classes
- Configuration - Configuration options