我可以期待(要求)失败进行测试吗?

时间:2017-03-04 18:01:25

标签: unit-testing go

在我使用的其他测试框架中,在编写测试助手时,很高兴能够自动测试它们,即测试它们是否失败以及传递。

让我使用以下内容作为助手(实际上它要复杂得多):

func IsRedirect(t *testing.T, code int) {
    assert.True(t, code >= 300)
    assert.True(t, code < 400)
}

然后确定,我可以写:

func TestIsRedirect(t *testing.T) {
    IsRedirect(t, http.StatusSeeOther)
}

但我也想写一些类似的东西:

func TestNotRedirect(t *testing.T) {
    t.RequireFailure()
    IsRedirect(t, http.StatusOK)
}

注意,我真的不想写:

func IsRedirect(code int) bool

因为该函数不仅仅有一两个条件可能会失败,而且我希望能够针对特定的失败案例assert

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

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