🕌

テストを独立して実行可能にしてほしい

2022/07/16に公開

独立実行可能とは

独立実行可能なテストとは、他のテストケースの影響を受けない(結果が変わらない)テストのことです。

独立実行可能だと、以下のような特徴を持ちます。

  • そのテスト単体で実行しても結果が変わらない
  • 他のテストが追加、削除されても結果が変わらない

結果が変わらないというのは、「成功していたテストが失敗にならない」かつ「失敗していたテストが成功しない」ということです。

なんで独立可能にしてほしいのか?

  • テストの追加、削除をしやすくするため
  • テストが落ちた時に調査をしやすくするため
  • フレイキーテストにならないようにするため

例えばテストケースの順番を入れ替えるとテスト結果が変わってしまう場合、テストファイルのリファクタリングが困難になります。また、テストを追加する時も位置を考えなければならず、安易に変更できません。変更しづらいテストファイルはプロダクトの重荷になりやすいです。

どうやれば独立実行可能になるのか?

基本方針は「テストケース内で変更したものを元に戻す」です。一般的な方法はないので、いくつか例を挙げます。

  • テストケースで変更したストアを、次のテストの前に初期化する
  • グローバルオブジェクト(window など)の状態をもとに戻す
  • モックの状態をリセットする

Discussion