Railsアプリケーションの統合テスト(「通常の」テスト、CucumberベースまたはRSpecベース)の実行時間を短縮するための成功した試みと失敗した試みについて、私の発見を共有し、他の人から聞きたいと思います。
この質問は、テストにはデータベース、ビューレンダリング、そしておそらくJavaScript/AJAXが含まれることを意味します。Eiテストは、アプリケーションの遅い部分をスタブ/モックしないでください。
Railsアプリケーションの統合テスト(「通常の」テスト、CucumberベースまたはRSpecベース)の実行時間を短縮するための成功した試みと失敗した試みについて、私の発見を共有し、他の人から聞きたいと思います。
この質問は、テストにはデータベース、ビューレンダリング、そしておそらくJavaScript/AJAXが含まれることを意味します。Eiテストは、アプリケーションの遅い部分をスタブ/モックしないでください。
著者の答え。 spork プラグインとインメモリ データベースの 2 つを試しました。私の開発構成: Win7、Ruby 1.8.7、Rails 3、SQLite でホストされている Ubuntu VirtualBox。
Sporkプラグインにより、テストの起動時間が 35 秒から 2 秒に短縮されました。ここに手順をまとめたが、それらは github readme に十分に記載されています。この投稿では、ファイルが変更されたときに spork サーバーを確実に再起動するために、Guard で使用する方法についても説明します。
実行時間を短縮するためにインメモリデータベースを使用しようとしました。場合によっては、実行時間が 10% 短縮されますが、スキーマを作成するための起動時間に 2 秒のオーバーヘッドがあります。そして、私が改善を観察できるよりもはるかに多くの結果が得られました。だから私は自分自身で、改善は苦労する価値がないと判断しました.
また、 RVM を使用して Ruby 1.8.7 を1.9.2に置き換えました。実行時間が 58 秒から 42 秒に短縮されました。
結論: Spork と 1.8.7 を 1.9.2 に置き換えることで、TDD エクスペリエンスを大幅に向上させることができます。