1
私が使っていた他のテストフレームワークでは、テストヘルパーを書くときに自動的にテストすることができます。go testの失敗を予期することができますか?
(現実には多くの複雑なのです)私はヘルパーのために以下を使用してみましょう:
func TestIsRedirect(t *testing.T) {
IsRedirect(t, http.StatusSeeOther)
}
をしかし、私はまたしたいと思います。そして、
func IsRedirect(t *testing.T, code int) {
assert.True(t, code >= 300)
assert.True(t, code < 400)
}
必ず、私は書くことができます
func TestNotRedirect(t *testing.T) {
t.RequireFailure()
IsRedirect(t, http.StatusOK)
}
注、私は本当に書きたくない:
ような何かを書きますfunc IsRedirect(code int) bool
この機能には1つまたは2つ以上の条件が満たされていないため、具体的なケースではassert
になりたいからです。
IMOのテストフレームワークはダムです。失敗はどういう意味ですか?あなたがテストした条件の1つが失敗しましたか?それはすべて失敗したのですか?あなたは無関係な無限ポインタ逆参照を持っているのですか?あなたの初期化コードがクラッシュしましたか?あなたがそれらの事のいずれかが起こることを期待すれば、あなたはそれらをテストすることができます。条件を逆にするのは簡単です。あなたが実際に意味することをフレームワークが正しく推測することは不可能です。 – Art
これは本当に奇妙な実装のようです。あなたは主張を支配している。フレームワークに「正しい」と「間違っている」と言っているのですが、正しいかどうかの意味を逆にしたいのですか?ちょうどあなたが実際に期待していることを主張する。 – Adrian