8

Rails4.0.0.beta1を使用しています。2つのディレクトリを追加しました:app/servicestest/services

また、testing.rake of railtiesの読み取りに基づいて、このコードを追加しました。

namespace :test do
  Rake::TestTask.new(services: "test:prepare") do |t|
    t.libs << "test"
    t.pattern = 'test/services/**/*_test.rb'
  end
end

私はそれrake test:servicesがでテストを実行することを発見しましたtest/services; ただし、rake testこれらのテストは実行されません。あるべきように見えます; ここにコードがあります:

Rake::TestTask.new(:all) do |t|
  t.libs << "test"
  t.pattern = "test/**/*_test.rb"
end

私は何かを見落としましたか?

4

4 に答える 4

11

テストタスク定義の後に次のような行を追加します。

Rake::Task[:test].enhance { Rake::Task["test:services"].invoke }

それらが自動的に取得されない理由はわかりませんが、これがTest::Unitで機能することがわかった唯一のソリューションです。

rake test:all実行すると、追加のテストが実行されると思いますがrake test、上記のスニペットがないと単独では実行できません。

于 2013-03-06T21:00:15.527 に答える
4

より新しいRailsバージョン(私の場合は4.1.0)を使用している場合

Rails::TestTaskタスクの代わりに使用して、タスクRake::TestTaskをオーバーライドします。run

namespace :test do
  task :run => ['test:units', 'test:functionals', 'test:generators', 'test:integration', 'test:services']
  Rails::TestTask.new(services: "test:prepare") do |t|
    t.pattern = 'test/services/**/*_test.rb'
  end
end
于 2014-04-25T13:52:50.640 に答える
3

Jimのソリューションは機能しますが、最終的には、追加のテストスイートを全体の一部としてではなく、個別のタスクとして実行します(少なくとも、Rails 4.1を使用します)。したがって、テスト統計は集計されるのではなく、2回実行されます。これがここでの望ましい動作だとは思いません。

これが私がこれを解決することになった方法です(Rails 4.1.1を使用)

# Add additional test suite definitions to the default test task here

namespace :test do
  Rails::TestTask.new(extras: "test:prepare") do |t|
    t.pattern = 'test/extras/**/*_test.rb'
  end
end

Rake::Task[:test].enhance ['test:extras']

これにより、デフォルトでtest:extras実行されるタスクのセットに新しいタスクを含めるだけで、正確に期待される動作が得られます。このアプローチを使用して、この方法で任意の数の新しいテストスイートを追加できます。rake testrake

Rails 3を使用している場合は、に変更するだけRake::TestTaskでうまくいくと思います。

于 2014-06-24T18:29:30.213 に答える
3

または単に実行しますrake test:all

デフォルトですべてのテストを実行する場合は、テストタスクをオーバーライドします。

namespace :test do
  task run: ['test:all']
end
于 2014-07-15T01:26:10.907 に答える