Spring Boot統合
依存関係
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")
}自動DataSource検出
3つのスターターはdb-tester-spring-supportを通じて同一の自動設定動作を共有します。
- Spring
ApplicationContextを検出 DataSourceBeanを検索- デフォルト
DataSourceを以下の優先順位で解決- 単一の
DataSourceBean(自動的にデフォルト) @Primary付きDataSource"dataSource"という名前のDataSourceBean
- 単一の
- すべてのBeanを
DataSourceRegistryに登録
手動のDataSource登録は不要です。スターターが登録を自動処理します。
拡張機能の登録
java
@SpringBootTest
@ExtendWith(SpringBootDatabaseTestExtension.class)
class UserRepositoryTest {
@Test
@DataSet
@ExpectedDataSet
void testCreateUser() {
// DataSourceはSpringコンテキストから自動登録
}
}groovy
@SpringBootTest
@SpringBootDatabaseTest
class UserRepositorySpec extends Specification {
@DataSet
@ExpectedDataSet
def 'should create user'() {
// DataSourceはSpringコンテキストから自動登録
}
}kotlin
@SpringBootTest
class UserRepositorySpec : AnnotationSpec() {
init {
extensions(SpringBootDatabaseTestExtension())
}
@Test
@DataSet
@ExpectedDataSet
fun `should create user`() {
// DataSourceはSpringコンテキストから自動登録
}
}| フレームワーク | 登録方法 |
|---|---|
| JUnit | @ExtendWith(SpringBootDatabaseTestExtension.class) |
| Spock | @SpringBootDatabaseTest(アノテーション駆動型拡張) |
| Kotest | init { extensions(SpringBootDatabaseTestExtension()) } |
複数DataSource
複数のデータソースを使用する場合、@Primaryと@QualifierでBeanを定義します。
java
@Configuration
class DataSourceConfig {
@Bean
@Primary
DataSource primaryDataSource() { }
@Bean
@Qualifier("secondary")
DataSource secondaryDataSource() { }
}アノテーションで名前付きデータソースを参照します。
java
@Test
@DataSet(sources = {
@DataSetSource(dataSourceName = ""), // Primary(デフォルト)
@DataSetSource(dataSourceName = "secondary") // Secondary
})
void testMultipleDatabases() { }設定プロパティ
application.propertiesまたはapplication.ymlで設定します。すべてのプロパティは3つのスターター共通です。
properties
# DB Testerの有効化/無効化(デフォルト: true)
db-tester.enabled=true
# DataSource Beanの自動登録(デフォルト: true)
db-tester.auto-register-data-sources=true
# データフォーマット(AUTO、CSV、TSV、JSON、またはYAML)
db-tester.convention.data-format=AUTO
# 期待ディレクトリサフィックス
db-tester.convention.expectation-suffix=/expected
# シナリオマーカーカラム名
db-tester.convention.scenario-marker=[Scenario]
# テーブルマージ戦略(FIRST, LAST, UNION, UNION_ALL)
db-tester.convention.table-merge-strategy=UNION_ALL
# デフォルト準備操作
db-tester.operation.preparation=CLEAN_INSERT
# デフォルト期待操作(通常は検証のみのためNONE)
db-tester.operation.expectation=NONEプロパティ名は単数形(convention, operation)を使用します。
自動設定クラス
| モジュール | 自動設定クラス |
|---|---|
| JUnit Starter | DbTesterJUnitAutoConfiguration |
| Spock Starter | DbTesterSpockAutoConfiguration |
| Kotest Starter | DbTesterKotestAutoConfiguration |