Unit testing 由于以前的测试用例失败而引发的断言异常
我想不出更好的标题了 在下面的代码中,如果Unit testing 由于以前的测试用例失败而引发的断言异常,unit-testing,testing,go,junit,assert,Unit Testing,Testing,Go,Junit,Assert,我想不出更好的标题了 在下面的代码中,如果rollBackLogger为nil,则第一个测试用例将失败,但所有其他测试用例将引发异常 除了使用if语句之外,是否有其他方法可以避免这种情况 我相信这是单元测试中非常常见的情况,应该在assert中有一些函数,或者其他一些方法来避免这种情况 assert.NotNil(rollbackLogger) assert.Equal("Action", rollBackLogger[0].Action) assert.Equal("random path",
rollBackLogger
为nil
,则第一个测试用例将失败,但所有其他测试用例将引发异常
除了使用if
语句之外,是否有其他方法可以避免这种情况
我相信这是单元测试中非常常见的情况,应该在assert
中有一些函数,或者其他一些方法来避免这种情况
assert.NotNil(rollbackLogger)
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)
如果您希望在条件无效时测试失败,只需使用
t.FailNow()
我认为没有一种方法可以在不使用条件或外部包的情况下停止对断言失败的测试
if !assert.NotNil(rollbackLogger) {
t.FailNow()
}
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)
或者如果您使用验证/断言
包
if !assert.NotNil(rollbackLogger) {
assert.FailNow(t, "message")
}
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)
改用
Package require实现了与assert
包相同的断言,但在测试失败时停止测试执行
require.NoError也特别有用。您也可以使用
assert.FailNow(t)
来做同样的事情,但我不认为它是对t.FailNow()的升级。
在测试中坚持一个“断言”源的例外。