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