2012-11-30 8 views
7

私はMiniTestスイートを持っています。私は基本的なMinitest::Unit::TestCaseを使用していますが、仕様ではありません。私はsetupteardownメソッドを私のTestCaseサブクラスに定義しています。次のようなテストファイルを実行すると完全に動作します:ruby test/whatever_test.rb。しかし、rake testを実行すると、setupteardownは呼び出されません。私のRakefileの関連部分は次のとおりです。Minitest#Rake経由でテストを実行すると、セットアップおよび#teardownが呼び出されない

require 'rake/testtask' 

Rake::TestTask.new do |t| 
    t.test_files = FileList['test/*_test.rb'] 
    t.verbose = true 
end 

Rake::TestTaskが使用されている場合setupteardownが実行されないのはなぜ?

私はここにテストケースコードを貼り付けていましたが、かなり多くあります。特定のセクションが見たい場合は、そのサブセットに貼り付けます。

Ruby 1.9.3-p194でMinitest 4.3.2を実行しています。

+1

最低限の動作しないテストを投稿できますか? – tadman

答えて

14

問題は、別のテストケースはsetupteardown方法を上書きすることでした。私は誤って2つのテストケースに同じクラス名を与えていたので、上書きが起こったのです。もちろん、単一のテストケースを実行したときにこのエラーは発生しませんでした。これは、Rakeを使用する際の動作の違いを説明しています。

+0

Rails 5 Systemテスト(これはminitestを使用しています)ではこの同様の問題がありました。システムテストのセットアップ方法は、すべてのシステムテストを実行したときには実行されていませんでしたが、そのシステムテストファイルのみを実行したときに実行されていました。私たちの修正は、単にシステムテストファイルの名前を別のものに変更し、発生していたオーバーライドを修正しました。ありがとう! – Neil

1

私の場合、私は、ソケット通信のためのテストを書いていたし、sendという名前のヘルパーメソッドを追加しました。 MiniTestは内部でsendを使ってティアダウンメソッドを呼び出すため、代わりにメソッドディスパッチの代わりに自分自身のsendと呼んでいました。

関連する問題