blogPHPでWEB+DBシステムの開発をやっています。自動テストでデータベースにアクセステストを書く際に大切なのが、データベーステーブルのデータをテストで想定された状態にしておくということです。テーブルの内容がテストを実行される度に異なると、ある時はテストが通って、ある時は通らないという状態になります。開発を進めていると、データベーススキーマを変更する場合があります。コマンドで適用するのことになります。実行するのは、少し手間なので、テストケースで実行するようにしています。実行できるので、下記のようにすると、テストクラスでマイグレーションを実行することができます。下記のように実装して、初回のみ実行するようにしています。メソッドを実行して、マイグレーションを実行します。コマンドでデータを登録することができます。アプリケーションで必要なマスタデータや初期データを投入するのに使われますが、これをテスト時のフィクスチャとして利用します。以下に配置するのが通常なのですが、フレームワークとしては、オートローダーで読み込むことができれば、どこに配置しても構いません。ファイルに定義しています。'Seeder'で参照できます。実行するために独自に実装したメソッドで、下記のような実装になっています。付けることで、テーブルのシーケンス値のリセットと、このテーブルを外部参照しているテーブルを同時に削除することができます。さいごに冒頭に書きましたが、データベースを利用したテストでは、事前に想定した環境を作っておくことが肝になります。フィクスチャとして使うことで、アプリケーションの機能を使うことなく、テストに必要な状況を作り出すことができます。テストの中で、テスト対象以外のアプリケーションコードを実行すると、何をテストするためのものなのかが、ぶれてしまうので、環境構築はフレームワークやライブラリで用意された機能のみでシンプルに実現するのが良いでしょう。