# テストファースト

ロジックを実装するより前に、満たすべき仕様のテストを書きましょう。この時点では当然テストが失敗しますが、テストが通る実装をその後に書きます。この方法をテストファーストと呼びます。メリットは以下です。

  • 入出力のみに依存したテストにできる
    • 実装に依存したテストがあると、リファクタリングのたびに追従する必要があり、本末転倒です
  • テストを繰り返し実行して、仕様を満たしているか確認しながら段階的に実装できる
  • 失敗しないテスト(偽陰性)を防げる
    • テストが失敗することを確認しないと、条件を満たさないときでも成功するテストを作成してしまう可能性があります
      • アサートが含まれていない、アサートしている値が異なる、など
    • 先に実装を書いてテストが成功した場合、テストが間違っていて常に成功してしまうのか、実装が正しいのかが区別できません
      • 誤った条件でのテストが失敗することを確認すれば防げますが、忘れがちです

NOTE

✏️ テストを書いてから実装する