Playframework 播放+;光滑的+;进化测试建议
我从来没有100%满意过我测试游戏应用程序的方式。我已经确定了一种我已经使用了一段时间的方法,但它感觉有点粗糙,我错过了一些简单的东西 我使用SQLite,有一个名为Playframework 播放+;光滑的+;进化测试建议,playframework,playframework-evolutions,Playframework,Playframework Evolutions,我从来没有100%满意过我测试游戏应用程序的方式。我已经确定了一种我已经使用了一段时间的方法,但它感觉有点粗糙,我错过了一些简单的东西 我使用SQLite,有一个名为default的单一数据库配置,我在测试配置文件中覆盖该配置: application.conf slick.dbs.default { profile = "slick.jdbc.SQLiteProfile$" db.driver = "org.sqlite.JDBC" db.url = "jdbc:sqlite:de
default
的单一数据库配置,我在测试配置文件中覆盖该配置:
application.conf
slick.dbs.default {
profile = "slick.jdbc.SQLiteProfile$"
db.driver = "org.sqlite.JDBC"
db.url = "jdbc:sqlite:defaultDB.sqlite"
}
include "application.conf"
play = {
evolutions.enabled = false
}
slick.dbs.default {
profile = "slick.jdbc.SQLiteProfile$"
db.driver = "org.sqlite.JDBC"
db.url = "jdbc:sqlite:memory;DB_CLOSE_DELAY=-1"
}
application.test.conf
slick.dbs.default {
profile = "slick.jdbc.SQLiteProfile$"
db.driver = "org.sqlite.JDBC"
db.url = "jdbc:sqlite:defaultDB.sqlite"
}
include "application.conf"
play = {
evolutions.enabled = false
}
slick.dbs.default {
profile = "slick.jdbc.SQLiteProfile$"
db.driver = "org.sqlite.JDBC"
db.url = "jdbc:sqlite:memory;DB_CLOSE_DELAY=-1"
}
从我的测试配置中可以看到,我喜欢使用内存中的数据库进行测试。出于几个原因,我喜欢使用内存中的db进行测试
evolutions/default/.sql
下的dev/prod数据库,另一组用于存储在evolutions/test/.sql
下的测试数据库
在我的测试中,我使用注入
特性将数据库注入测试套件,并运行测试
演进,如下所示:
[TestName]Spec.scala
class MySpec使用before和afterall扩展PlaySpec,使用GuiceOneAppPerSuite和injection{
导入此ClassLoaderEvolutionsReader.evolutions
覆盖def beforeAll():单位={
super.beforeAll()
val db=inject[DBApi]。数据库(“默认值”)
进化。应用进化(db,SimpleEvolutionsReader.forDefault(进化(“测试”):*)
}
覆盖def afterAll():单位={
超级
val db=inject[DBApi]。数据库(“默认值”)
进化。清理进化(db)
}
“我的测试”应该{
“做点有用的事”在{
...
}
}
}
我不喜欢这种方法的一些地方: