断言由于先前的测试用例失败而引发的异常

时间:2018-08-10 09:25:32

标签: unit-testing testing go junit assert

我想不出更好的标题。

在以下代码中,如果rollBackLoggernil,则第一个测试用例将失败,但所有其他测试用例都将引发异常。

除了使用if语句以外,还有其他方法可以避免这种情况吗?

我认为这是单元测试的一种非常常见的情况,assert中应该有一些功能或其他某种方式可以避免这种情况。

assert.NotNil(rollbackLogger)
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)

2 个答案:

答案 0 :(得分:3)

改为使用require.NotNil

  

Package require实现与assert包相同的断言,但是在测试失败时停止测试执行。

require.NoError也特别有用。

答案 1 :(得分:2)

如果条件无效,如果您希望测试失败,则可以简单地使用t.FailNow()

我认为没有断言失败而不使用条件或外部程序包的方法。

if !assert.NotNil(rollbackLogger) {
    t.FailNow()
}
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)

或者如果您使用testify/assert包,

if !assert.NotNil(rollbackLogger) {
    assert.FailNow(t, "message")
}
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)