問題の歴史:
Arrange-Act-Assert(AAA)パターンは、テストの構造を簡素化し、その可読性を向上させるために提案されました。これは現代のテストフレームワークで広く使用されており、あらゆる種類の自動テストを書く際の事実上の標準です。
問題:
明確な構造がないと、テストケースは冗長で読みづらく、保守が困難になります。データの準備、テストされる動作の呼び出し、結果の検証の間に混乱が生じます。これにより、技術的負債が蓄積され、テストにエラーが発生します。
解決策:
テストを書く際にAAAパターンを厳密に遵守すること。
主な特徴:
テストが明白な場合、AAAの順序を破ってもよいか?
通常はダメです。AAA構造からの逸脱は、他の開発者にとってテストの可読性を低下させ、保守時のエラーへの脆弱性を高めます。
短いテストではActとAssertを1つの式にまとめるのは許可されるか?
これを避けるべきです。将来的なテストの理解や拡張が困難になるからです。
Arrangeの段階にデータのクリーンアップロジックを含める必要があるか?
いいえ。クリーンアップやテアダウンは通常、テストフレームワークのフック(After、AfterEachなど)で別個のメソッドとして実装されます。
データベースにレコードを追加するテストは、まずチェックを行い、その後に追加します。途中のランダムなアサートが邪魔します。
メリット:
デメリット:
テストはデータのクリーンアップから始まり、その後レコードの追加、最後に結果の確認が続き、AAAに厳密に従います。
メリット:
デメリット: