2012-03-27 8 views
8

私は、私が持っているjavascriptコードの一連のテストを書くためにqunitを使用しました。いまのところ何らかの理由で私のリストの最初のテストが実行され、リストの最後のテストが実行され、続いて2番目から最後まで、3番目から最後まで、4番目から最後までなど...テストでは私はそれらを持っている順序で動作します。qunitが前回失敗したテストを実行するオプションをオフにしましたが、それでもやっています。これを修正する方法はありますか?すぐにテストを実行するためにQUnITを取得する

答えて

11

まず、テストを特定の順序で実行する必要がある理由を理解します。単体テストの全体的なポイントは、テストがアトミックであり、それらを任意の順序で実行することが可能でなければならないということです。テストスイートがこれに対応できない場合、大きな問題を表す可能性がある理由を理解する必要があります。

解決できない場合は、問題の原因となるものが見つかるまでテストスイートを小さなグループに分割する必要があります。

編集:この参照はhttp://www.educatedguesswork.org/2011/06/curse_you_qunit_1.htmlにあります。どうやら、あなたのテストスイートにこれを追加すると助けになるでしょう。QUnit.config.reorder = false;

+0

いいえ、理由はわかります。効率を上げる。 (私は詳細を知りたくはありませんが、今のところ各テストには非常に時間がかかり、可能な限り合理化していく必要があります)。いくつかのテストは、以前のテストの結果に依存しています。私はすべてを原子的にすることができますが、すべてはそれよりもさらに長くかかります。時間が問題にならない位置に置かれたら、私は原子モデルに戻るかもしれませんが、今のところ私は効率のために書き込んだ順番でテストを実行したいと思います。 – user1028497

+2

@ user1028497「いくつかのテストは、前のテストの結果に依存しています。」次に、アトミック性はありません。テスト自体にテストに必要なものを用意する必要があります。 – unludo

+0

私はそうしていた。しかし、現時点では効率が必要で、これが最善の方法です。私はすべてを説明したくはありませんが、現時点では私が持っている順番でテストを実行する必要があると言うだけで十分です。 – user1028497

0

多分、それぞれの主要な計算を行うコードを、計算がすでに完了しているかどうかをチェックするテストが最初にある関数に置くことを検討することができます。計算が完了していない場合は、計算を行い、結果をどこかに保存します。計算がすでに完了している場合は、結果を返します。このようにして、すべてのテストに対して1つの計算を行うことができますが、テストが実行される順番には自立しています。

単位テストでは時間がかかる計算の問題に関連していますが、テストグループでは単体テストを行い、独立した自律テストとして実行することが不可欠です。これは、重大な問題が発生し、具体的に対処する必要がある場合に特に当てはまります。

関連する問題