为了账号安全,请及时绑定邮箱和手机立即绑定

使 Go 测试彼此独立(全局变量的突变)

使 Go 测试彼此独立(全局变量的突变)

Go
哔哔one 2022-05-23 18:01:50
鉴于我运行以下测试: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

}


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信