我正在使用go"测试"包.运行我的测试如下.
func TestMain(m *testing.M) {
...
// Setup
os.Exit(m.Run())
// Teardown
}
Run Code Online (Sandbox Code Playgroud)
这将在运行任何测试之前运行设置,并在所有测试完成后进行拆卸.我确实需要这个,因为设置设置了DB.但是,我还需要找到一种方法来运行每次测试设置/拆卸.对于我正在运行的单元测试,我想在每次测试之前清除DB,以便DB的内容没有问题导致意外行为.
Von*_*onC 17
如Kare Nuorteva的文章" Go unit test setup and teardown " 所示,你可以使用一个设置函数来返回......一个拆卸功能.
看到这个要点:
func setupSubTest(t *testing.T) func(t *testing.T) {
t.Log("setup sub test")
return func(t *testing.T) {
t.Log("teardown sub test")
}
}
Run Code Online (Sandbox Code Playgroud)
设置功能负责定义和返回拆卸的功能.
对于每个测试,例如在表驱动的测试场景中:
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
teardownSubTest := setupSubTest(t)
defer teardownSubTest(t)
result := Sum(tc.a, tc.b)
if result != tc.expected {
t.Fatalf("expected sum %v, but got %v", tc.expected, result)
}
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13619 次 |
| 最近记录: |