Kotest統合
モジュール
db-tester-kotest
拡張クラス
パッケージ: io.github.seijikohara.dbtester.kotest.extension.DatabaseTestExtension
タイプ: TestCaseExtension - 準備フェーズと期待フェーズのためにテストケース実行をインターセプトします。
登録
推奨 — @DatabaseTestアノテーションを使用します。SpecificationクラスはDatabaseTestSupportインターフェースを実装してください。
kotlin
@DatabaseTest
class UserRepositorySpec : AnnotationSpec(), DatabaseTestSupport {
override val dbTesterRegistry = DataSourceRegistry()
private lateinit var dataSource: DataSource
@BeforeAll
fun setupSpec() {
dataSource = createDataSource()
dbTesterRegistry.registerDefault(dataSource)
}
@Test
@DataSet
@ExpectedDataSet
fun `should create user`() {
// テスト実装
}
}代替手段 — initブロックで拡張機能を登録します。
kotlin
class UserRepositorySpec : AnnotationSpec(), DatabaseTestSupport {
override val dbTesterRegistry = DataSourceRegistry()
init {
extensions(DatabaseTestExtension())
}
@BeforeAll
fun setupSpec() {
dbTesterRegistry.registerDefault(dataSource)
}
@Test
@DataSet
@ExpectedDataSet
fun `should create user`() {
// テスト実装
}
}DatabaseTestSupportインターフェース
DatabaseTestSupportインターフェースはデータベーステストのコントラクトを提供します。
| プロパティ | 型 | 必須 | 説明 |
|---|---|---|---|
dbTesterRegistry | DataSourceRegistry | Yes | データソース登録 |
dbTesterConfiguration | Configuration | No | カスタム設定(デフォルトはConfiguration.defaults()) |
DataSource登録
DatabaseTestSupportインターフェースを実装し、dbTesterRegistryをオーバーライドします。
kotlin
@DatabaseTest
class UserRepositorySpec : AnnotationSpec(), DatabaseTestSupport {
override val dbTesterRegistry = DataSourceRegistry()
@BeforeAll
fun setupSpec() {
dbTesterRegistry.registerDefault(dataSource)
dbTesterRegistry.register("secondary", secondaryDataSource)
}
}設定のカスタマイズ
インターフェース実装でdbTesterConfigurationをオーバーライドします。
kotlin
@DatabaseTest
class UserRepositorySpec : AnnotationSpec(), DatabaseTestSupport {
override val dbTesterRegistry = DataSourceRegistry()
override val dbTesterConfiguration = Configuration.builder()
.conventions(ConventionSettings.builder()
.dataFormat(DataFormat.TSV)
.build())
.build()
}テストメソッド命名
説明的なテスト名にはバッククォートメソッド名を使用します。
kotlin
@Test
@DataSet
fun `should create user with email`() {
// シナリオ名: "should create user with email"
}AnnotationSpec要件
DB TesterはKotest統合にAnnotationSpecスタイルを必要とします。
- アノテーション(
@DataSet、@ExpectedDataSet)をテストメソッドに適用可能 - リフレクションによるメソッド解決の信頼性が高い
- Java開発者にとって馴染みのあるJUnit風の構造
関連仕様
- テストフレームワーク概要 - サポートフレームワーク一覧
- JUnit - JUnit統合
- Spock - Spock統合
- Spring Boot - Spring Boot自動設定
- ライフサイクル - ライフサイクルフックと実行クラス
- アノテーション - アノテーションの詳細
- 設定 - 設定オプション