Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 由于以前的测试用例失败而引发的断言异常_Unit Testing_Testing_Go_Junit_Assert - Fatal编程技术网

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()的升级。
在测试中坚持一个“断言”源的例外。