Unit testing 我能期望(要求)围棋考试失败吗?
在我使用过的其他测试框架中,当编写测试助手时,能够自动测试它们是很好的,即测试它们是否失败以及通过 让我将以下内容用于帮助器(实际上要复杂得多): 但我也想写一些类似的东西:Unit testing 我能期望(要求)围棋考试失败吗?,unit-testing,go,Unit Testing,Go,在我使用过的其他测试框架中,当编写测试助手时,能够自动测试它们是很好的,即测试它们是否失败以及通过 让我将以下内容用于帮助器(实际上要复杂得多): 但我也想写一些类似的东西: func TestNotRedirect(t *testing.T) { t.RequireFailure() IsRedirect(t, http.StatusOK) } 注意,我真的不想写: func IsRedirect(code int) bool 因为函数有不止一个或两个可能失败的条件,我希望
func TestNotRedirect(t *testing.T) {
t.RequireFailure()
IsRedirect(t, http.StatusOK)
}
注意,我真的不想写:
func IsRedirect(code int) bool
因为函数有不止一个或两个可能失败的条件,我希望能够对特定的失败情况断言。您可以执行以下操作:
func IsRedirect(t *testing.T, code int, b bool) {
assert.Equal(t, b, code >= 300)
assert.Equal(t, b, code < 400)
}
func TestNotRedirect(t *testing.T) {
IsRedirect(t, http.StatusOK, false)
}
func IsRedirect(t*testing.t,code int,b bool){
断言相等(t,b,代码>=300)
断言相等(t,b,代码<400)
}
func TestNotRedirect(t*testing.t){
IsRedirect(t,http.StatusOK,false)
}
您可以执行以下操作:
func IsRedirect(t *testing.T, code int, b bool) {
assert.Equal(t, b, code >= 300)
assert.Equal(t, b, code < 400)
}
func TestNotRedirect(t *testing.T) {
IsRedirect(t, http.StatusOK, false)
}
func IsRedirect(t*testing.t,code int,b bool){
断言相等(t,b,代码>=300)
断言相等(t,b,代码<400)
}
func TestNotRedirect(t*testing.t){
IsRedirect(t,http.StatusOK,false)
}
IMO测试框架具有“假设失败”模式是愚蠢的。失败意味着什么?你测试的其中一个条件失败了?他们都失败了?你得到了一个随机的零指针解引用?你的初始化代码崩溃了?如果你期望这些事情发生,那么你可以测试它们。颠倒你的条件句是微不足道的。要让一个框架正确猜测您的实际意思是不可能的。这看起来是一个非常奇怪的实现。您可以控制assert.True调用;你告诉框架什么是“正确的”和“不正确的”,然后你想颠倒正确和不正确的含义?只要坚持你的实际期望,“消极”测试很重要。目标是测试已知的错误输入(来自用户,无论什么)是否按预期失败。“正如预期的那样,测试用例成功地失败了。”具有“假设失败”模式的IMO测试框架是愚蠢的。失败意味着什么?你测试的其中一个条件失败了?他们都失败了?你得到了一个随机的零指针解引用?你的初始化代码崩溃了?如果你期望这些事情发生,那么你可以测试它们。颠倒你的条件句是微不足道的。要让一个框架正确猜测您的实际意思是不可能的。这看起来是一个非常奇怪的实现。您可以控制assert.True调用;你告诉框架什么是“正确的”和“不正确的”,然后你想颠倒正确和不正确的含义?只要坚持你的实际期望,“消极”测试很重要。目标是测试已知的错误输入(来自用户,无论什么)是否按预期失败。测试用例按预期成功失败
func IsRedirect(t *testing.T, code int, b bool) {
assert.Equal(t, b, code >= 300)
assert.Equal(t, b, code < 400)
}
func TestNotRedirect(t *testing.T) {
IsRedirect(t, http.StatusOK, false)
}