鉴于我运行以下测试:const unchanged = "unchanged"var myField = unchangedfunc TestChangeField1(t *testing.T) { if myField != unchanged { t.FailNow() } myField = "changed"}func TestChangeField2(t *testing.T) { if myField != unchanged { t.FailNow() } myField = "changed"}第二个测试将失败,因为变量已在另一个测试中更改。我知道有一些变通方法,例如使用测试套件,它提供挂钩来将此值重置为测试之间的初始状态。但首先这意味着一些开销,其次我觉得整个行为令人惊讶,所以我不能确定我项目中的每个人都记得并遵守这一点。有没有更直接的解决方案go test,比如我还没有找到的标志?
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
如果您需要在测试用例之后运行 clean up,您可以使用t.Cleanup.
package main_test
import (
"testing"
)
const Default = "default"
const SomethingElse = "something else"
var someVar = Default
func TestOne(t *testing.T) {
t.Cleanup(resetState)
if someVar != Default {
t.FailNow()
}
someVar = SomethingElse
}
func TestTwo(t *testing.T) {
t.Cleanup(resetState)
if someVar != Default {
t.FailNow()
}
someVar = SomethingElse
}
func resetState() {
someVar = Default
}
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报
0/150
提交
取消