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_Go - Fatal编程技术网

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)
}