アサーションとは何か?
アサーションとは、テスト内で実際の結果を期待される結果と照合し、テストが成功か失敗かを決定する文です。
すべてのテストは究極的にはアサーションに帰着します。アサーションは「これは真であるべきだ」と宣言し、そうでなければテストは失敗します。テストの品質はそのアサーションに宿ります。多くのコードを実行してもほとんどアサートしないテストは、ほとんど何も証明しません。鋭いアサーションこそが、グリーンのチェックに意味を与えるものです。
アサーションが行うこと
アサーションは実際の値を期待値と比較し、一致しなければ失敗を発生させます。その失敗には、何が期待され何が起こったかを説明するメッセージが伴い、これが失敗したテストを単なる赤色ではなく実行可能なものにします。
よくあるアサーションの種類
- 等価性:実際の値が期待値と等しい。
- 真偽:値が真、存在する、または非nullである。
- 例外:呼び出しが期待されるエラーをスローする。
- コレクションと形状のチェック:含む、長さ、一致する。
簡単な例
アサーションは期待される結果を述べます。明確な失敗メッセージは、その食い違いをまっすぐに指し示します。
A basic equality assertion
expect(total).toBe(42);
// on failure: expected 42, received 40優れたアサーションの条件
優れたアサーションは具体的で振る舞いに焦点を当てています。付随的な実装の詳細ではなく、重要な結果を確認します。アサーションが少なすぎるとバグが捕捉されず(ミューテーションテストが暴く問題です)、過度に具体的なものはテストを壊れやすくします。振る舞いが誤っているとき、そしてそのときだけ失敗するアサーションを目指しましょう。
アサーションとCIのシグナル
CIでは、アサーションが成功か失敗かを決定し、そのメッセージが壊れたbuildで開発者が読むものです。強力なアサーションと高速で信頼できるrunnerが揃えば、赤いbuildは意味があり、かつ診断も素早くなります。これこそ自動テストの真の目的です。
重要なポイント
- アサーションは、実際の結果を期待値と照合する。
- テストの品質は、そのアサーションの鋭さに宿る。
- 優れたアサーションは、振る舞いが誤っているときにちょうど失敗する。
関連ガイド
What Is a Unit Test?Unit testing explained: what a unit is, why these tests are small and fast, a simple example, common pitfalls…
What Is Mutation Testing?Mutation testing explained: how it grades your tests by introducing bugs and checking if tests catch them, th…
What Is a Test Runner?Test runners explained: the tool that discovers, executes, and reports on your tests, what features they prov…
What Is a Test Harness?Test harnesses explained: the supporting setup that lets tests run, its parts, how it differs from a test run…