最近我一直在玩 golang 和谷歌的应用引擎。
在实现存储库时,我遇到了非常缓慢的单元测试执行。
我所做的就是ctx,_ := aetest.NewContext(nil)在每个测试中调用以获得一个干净的数据库。这会在每次测试中启动一个新服务器,从而导致测试缓慢。
最近我一直试图通过在 TestMain 中启动它来解决这个问题。
var ctx aetest.Context
func TestMain(m *testing.M) {
ctx,_ = aetest.NewContext(nil)
code := m.Run()
ctx.Close()
os.Exit(code)
}
func TestMyRepository(t *testing.T){
cleanDatastore()
repo := &MyRepository{ctx}
repo.DoSomething()
}
在函数cleanDatastore 中,我一直在执行一个 bash 脚本,该脚本基本上运行一个 SQLite 命令来清理保存在 /tmp 中的本地数据库。
#!/usr/bin/env bash
PATH=$1
cd $PATH
echo "Cleaning datastore..."
/usr/bin/sqlite3 datastore "delete from \"dev~testapp!!EntitiesByProperty\";"
/usr/bin/sqlite3 datastore "delete from \"dev~testapp!!Entities\";"
echo "Datastore is clean."
是我想要做的有意义的事情还是有更简单的方法来实现更好的测试时间。
MYYA
相关分类