2009-03-26 16 views
7

すべての単体テストを実行したいときは、rake test:unitsを実行します。すべての機能テストを実行するために、rake test:functionalsを実行します。私は1つのファイルにすべてのテストケースを実行したい場合は、私は少数の人々は、私は、このようなRuby on Rails:テストの実行

レーキとして代わりに熊手を実行する必要が私に言ってきた

ルビーテスト/ユニット/ username_test.rb

を実行しますテスト:ユニットTEST =テスト/ユニット/ username_test.rb

テストを実行するために、私は常にレーキを実行する必要があると言います。私がすべての単体テストをテストしているならば、私はレーキを実行すべきであることを知っています。しかし、もし私がテストしているファイル中のファイルが1つだけであれば、それはどうでしょうか?まだレーキを使うべきですか?両者に違いはありますか?私はルビーの上にレーキを実行することから利益を得ることができますか?レーキではなくルビーを実行することに不利な点はありますか?

答えて

2

いいえ、私はそうは思わない。 Rakeは、すべてのテスト、すべての単体テスト、またはすべての機能/コントローラテストを実行する便利な方法のようです。 1つのファイルについては、私はruby object_test.rbアプローチを使用しています。私のレールホームプロジェクトは短く、うまく動作します。

6

悲しいことに、2つは同じではありません。テストを実行すると、テストを直接実行するときとは異なる場所からテストを実行することができます(システムに複数のバージョンのgemなどがある場合はさらに問題があります)。

レーキの下で実行されるテストは、レールが生成する環境に合っている必要があります。どれほど緊密に一致しているかを証明することはできませんが、直接実行した場合には成功しましたが、レーキやレールで実行された場合は失敗しました。

+0

これはテスト設定が不良であることを示し、通常は、1つのメソッドが他のテストと異なる順序で実行されることによって発生します。その1つがテストに失敗する原因になります。おそらくあなたはトランザクションを使用していないので、テストは自分自身でやっていないか、または自分が使っている什器を適切に要求していないからです。 –

3

少なくとも私がrakeを実行して、予期しないことが何も起こっていないことを確認するためにすべてを叩くことをお勧めします。

プレーンなルビーは、繰り返し処理中に単一のファイルを高速にテストするのに理想的です。

私は最近混乱していたので、すべてを個別に実行すると、結果が異なることがあることに注意してください - 1つのテストで何か間違ったことをしていましたが、私がレーキを使用したときにしか現れなかった後続のテスト。

-1

これらは同一である必要があります。もしそうでなければ、あなたは間違って何かをしているのです。

私が他のコメントで言ったように、あなたが1つに合格するが、もう一方では失敗するテストを得れば、あなたは何か非常に間違ったことをしている。これは不良なテスト設定を示し、通常は2つのテスト方法の間で異なるテスト実行順序によって発生します。その1つがテストに失敗する原因になります。

通常、これはあなたがトランザクションを使用していないこと、および/またはテストが自分自身の後でクリーンアップしていないということです。たとえば、後でテストするフィクスチャを適切に必要とせず、代わりに既存のデータベース状態に依存します。

いずれの方法も自由に使用できます。何かが壊れた場合、テストで何か間違ったことをしているので、コードを修正する必要があります。

0

2つは同じではありません。レイクは予備テストを行います。

レーキの下で実行されるテストは、レールが生成する環境に合っている必要があります。

私が気付いた点の1つは、レーキでは、ルービをバイパスする可能性のあるフィクスチャロードの一部が発生することです。

ruby​​コマンドラインを-nオプション付きファイル内の1つのテストに使用しない限り、rakeの使用をお勧めします。