1
在我使用的其他测试框架中,编写测试助手时,能够自动测试它们是很好的,即测试它们失败并通过测试。我可以期望(需要)失败测试吗?
让我用下面的助手(在现实中,它是一个复杂得多):
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
。
IMO测试框架。失败意味着什么?你测试的条件之一失败了吗?他们都失败了?你有一个随机的零指针解引用?你的初始化代码崩溃了?如果你期望任何这些事情发生,那么你可以测试他们。扭转你的条件是微不足道的。不可能正确地猜出你实际意思的框架。 – Art
这似乎是一个非常奇怪的实现。你正在控制assert.True调用;你告诉框架什么是“正确”和“不正确”,然后你想颠倒正确和错误的含义?只要坚持你实际期望的。 – Adrian