1

我是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。有没有一种方法可以让我在全局范围内定义这个模式,并且可以为每个测试用例摆脱这部分。

4

0 回答 0