我是Kotlin 公开框架的新手。我正在寻找的是在H2数据库中拥有一个全局数据库模式 - jdbc:h2:mem:test 用于我的测试用例。
在我的应用程序中,我使用的是 mysql。我只想将 H2 用于测试。
下面是我的代码片段供参考。
object ConnectToDatabase : TestListener {
var database: Database? = null
override suspend fun beforeSpec(spec: Spec) {
database = Database.connect("jdbc:h2:mem:testdb", driver = "org.h2.Driver")
}
}
class StudentProcessorTests : FreeSpec() {
override fun listeners(): List<TestListener> = listOf(ConnectToDatabase)
val DaggerObj = DaggerObject.create()
val studentProcessor = DaggerObj.studentProcessor();
private fun createTable(table: Table) {
transaction {
SchemaUtils.create(table)
}
}
private fun insertSampleRowForStudent() {
transaction {
Student.insert {
//code
}
}
}
private fun insertSampleRowForDepartment() {
transaction {
Department.insert {
//code
}
}
}
init {
"Case1" {
transaction {
createTable(Student)
createTable(Department)
createTable(Faculty)
insertSampleRowForStudent()
insertSampleRowForDepartment()
val response = studentProcessor.createStudent(StudentObject)
Assert.assertTrue(response > 0)
}
}
"Case2" {
transaction {
createTable(Student)
createTable(Department)
createTable(Faculty)
insertSampleRowForStudent()
insertSampleRowForDepartment()
}
}
}
}
在这里,每次我必须为每个测试用例编写 - createTable。有没有一种方法可以让我在全局范围内定义这个模式,并且可以为每个测试用例摆脱这部分。