完全な PHPUnit スイートを実行するのに必要な時間が増えるにつれて、私たちのチームは単体テストを並行して実行する可能性があるかどうか疑問に思い始めています。最近、Paraunit に関する記事を読みました。また、Sebastian Bergman が書いた、彼は PHPUnit 3.7 に並列処理を追加します。
しかし、統合テスト、またはより一般的には DB と対話するテストには問題が残っています。一貫性を保つために、各テストの後に testDB をリセットし、フィクスチャをロードする必要があります。しかし、並列テストでは、すべてのプロセスが同じ DB を使用するため、競合状態の問題があります。
したがって、統合テストを並行して実行できるようにするには、各プロセスに独自のデータベースを割り当てる必要があります。この問題をどのように解決できるかについて誰かが考えているかどうかを尋ねたいと思います。別の xUnit 実装で、この問題に対する解決策が既に実装されている可能性があります。
私のチームではMongoDBを使用しているため、1つの解決策は、生成されたDB名(このプロセス用)を使用して、各PHPUnitプロセスの構成ファイルをプログラムで作成することです。setUp()
メソッドでは、メインのTestDbをこの一時的なものに複製できます。しかし、このアプローチの実装を開始する前に、このトピックに関するアイデアをお聞きしたいと思います.