web-dev-qa-db-ja.com

すべてのテストをminitestで実行する方法は?

プロジェクトのソースコードをダウンロードし、バグを見つけて修正しました。

ここで、テストを実行して、何かが壊れているかどうかを確認します。

テストはミニテストDSLで行われます。

一度にすべてを実行するにはどうすればよいですか?

該当するレーキタスクなどを検索しましたが、見つかりませんでした。

67
guai

Rake :: TestTask へのリンクです。

開始するためのページに例があります。
gemのために現在使用している別のものを投稿します。

require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = "spec/*_spec.rb"
end

ご覧のとおり、ファイルはすべて/libにあり、仕様は/specにあり、whatever_spec.rbという名前であると想定しています

それが役に立てば幸い。

87
locks

ロックの答えは優れていますが、Rubyコマンドのようにコマンドからminitestを直接実行することもできます。spec/ calculator_spec.rbファイルでテストを実行するには実行:

$ Ruby spec/calculator_spec.rb 

Calculator_spec.rbファイルに次のコードを含めることを忘れないでください:

require 'minitest/spec'
require 'minitest/autorun'

Spec /ディレクトリですべてのテストを実行するには、次のコマンドを使用します(詳細についてはこの投稿を参照してください GlobbingはMinitestでは機能しません-1つのファイルのみが実行されます

$ for file in spec/*.rb; do Ruby $file; done 
26
Powers

これは何 - Rake::TestTask フードの下で、多かれ少なかれ:

Ruby -Ilib -e 'ARGV.each { |f| require f }' ./test/test*.rb

注:libtest/test*.rb(上記)はデフォルトですが、testtest/*_test.rb、それぞれ、より典型的です。

ソース: c34d9e0行169のrake/testtask.rb

JRubyを使用していて、起動コストを2回支払うことを避けたい場合(Rakeに対して1回、Rakeが起動するサブプロセスに対して1回)、そのコマンドを使用します。

18
Theo

これが私のrakefile全体です。これをトップディレクトリに配置します。

task :default => :test
task :test do
  Dir.glob('./test/*_test.rb').each { |file| require file}
end

すべてのテストファイルを一度に実行するには、rakeと入力します。それでおしまい!

require 'minitest/autorun'各ミニテストファイルの上部。 Dir.globは間違いなくMinitestで動作します。

すべてのテストメソッドの名前で、きれいな色のMinitest出力を取得するには、ファイルminitest_helper.rb私の/ testディレクトリ。 (gem minitest-reportersをインストールする必要がありました):

require 'minitest/reporters'
Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
require 'minitest/autorun'

私はただrequire_relative './minitest_helper'各テストファイルの上部。

13
Raymond Gan

これは、Makefileを介して行うこともできます。

default:
  echo "Dir.glob('./test/*_test.rb').each { |file| require file}" | Ruby

makeを実行すると、すべてのテストが実行されます。

6
dkinzer

Rubyの標準ライブラリのみを使用してこれを行う別の方法は、 _Dir.glob_ を使用することです。 Rubyファイルから、これは次のようになります。

_require "minitest/autorun"

Dir.glob("**/*Test.rb") { |f| require_relative(f) }
_

または、コマンドラインから次のコマンドを使用できます。

_Ruby -I . -e "require 'minitest/autorun'; Dir.glob('**/*Test.rb') { |f| require(f) }"
_

Dir.glob('**/*Test.rb')は、_*Test.rb_に一致するファイルを現在のディレクトリで再帰的に検索するので、それらのファイルすべてとrequireまたは_require_relative_を取得します。コマンドラインから_require_relative_は失敗するため、requireを使用しますが、最初に現在のディレクトリを_$LOAD_PATH_から_-I ._に追加します

3
Justin

$ rake test Rails 5.0ボックス。

3
thedanotto

これは非常に古い質問ですが、rake testは、Rails 4.2で機能します。test/ integration /、test/unit /など、test/integration /の下のファイルを含みます。

0
David Hempy