我很难让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
第二个测试基本相同,但在第二个断言中断言为真。
当我调用命令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次失败。如果我使用
一次运行一个测试rake test TEST=test/minitest_101_test.rb
rake test TEST=test/minitest_102_test.rb
然后我得到了我期望的结果。
基本上问题是,rake test
看起来不像我期望的那样迭代 - 并且只运行test_files
列表中的最后一个文件。有人可以帮助我让这个迭代所有给test_files
的测试文件吗?
答案 0 :(得分:1)
您正在重新打开该类并重写方法test_ok
,因此实际上您只会获得一个测试用例。尝试重命名这样的第二个类,它应该按预期工作。
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