0

Rake::TestTask でテスト ファイルを反復処理するのに苦労しています。

次のような RakeFile があります。

require 'rake/testtask'
require 'pp'

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

次のようなフォルダー構造があります。

.
│   RakeFile
├───lib
│       simple_number.rb
└───test
        minitest_101_test.rb
        minitest_102_test.rb

私の最初のテストケースtest\minitest_101_test.rbは次のようになります。

require 'minitest/autorun'
class SimpleTest < Minitest::Unit::TestCase

    def test_ok
        assert(1, '1 is true')
        assert(nil, 'nil is false - this is expected to fail')
    end
end

2 番目のテストは基本的に同じですが、2 番目のアサートで true をアサートします。

コマンドを呼び出すとrake test、出力は次のようになります。

C:\src_test\ruby\unit_test>rake test
#<Rake::TestTask:0x286fff8
 @libs=["lib", "test"],
 @loader=:rake,
 @name=:test,
 @options=nil,
 @pattern=nil,
 @ruby_opts=[],
 @test_files=["test/minitest_101_test.rb", "test/minitest_102_test.rb"],
 @verbose=true,
 @warning=false>
C:/opt/Ruby193/bin/ruby.exe -I"lib;test" -I"C:/opt/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib" "C:/opt/Ruby193/lib/ruby/gems/1
.9.1/gems/rake-10.1.0/lib/rake/rake_test_loader.rb" "test/minitest_101_test.rb" "test/minitest_102_test.rb"
Run options: --seed 13792

# Running tests:

.

Finished tests in 0.001000s, 1000.0000 tests/s, 2000.0000 assertions/s.

1 tests, 2 assertions, 0 failures, 0 errors, 0 skips

2 つのテスト、4 つのアサーション、1 つの失敗が見られると予想しています。を使用して一度に1つずつテストを実行すると

rake test TEST=test/minitest_101_test.rb
rake test TEST=test/minitest_102_test.rb

その後、期待どおりの結果が得られます。

rake test基本的に問題は、私が期待する方法で反復しているようには見えず、test_filesリストの最後のファイルだけが実行されていることです。に与えられたすべてのテストファイルを反復処理するのを手伝ってくれませんtest_filesか?

4

1 に答える 1

1

class を再度開いて method をオーバーライドtest_okしているため、実際には 1 つのテスト ケースしか得られません。このように 2 番目のクラスの名前を変更してみてください。期待どおりに動作するはずです。

class SimpleTest2 < Minitest::Unit::TestCase
    def test_ok
        assert(1, '1 is true')
        assert(nil, 'nil is false - this is expected to fail')
    end
end
于 2013-09-20T04:25:32.690 に答える