由于之前的 test-case 失败引发断言异常

Assert exception raised due to previous test-case failure

我想不出更好的标题。

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

除了使用 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)

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

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

改用require.NotNil

Package require implements the same assertions as the assert package but stops test execution when a test fails.

require.NoError 也特别有用。