2011-06-29 4 views
26

すべてのテストケースを自動的に実行するのではなく、ルビテスト/ユニットフレームワークで単一のテストを実行する方法はありますか?私はレイクを使ってそれを達成することができると知っていますが、私は現時点でレーキに切り替える準備ができていません。Rubyテスト/ユニットを使用して単一のテストを実行するにはどうすればよいですか?

ruby unit_test.rb #this will run all the test case 
ruby unit_test.rb test1 #this will only run test1 

答えて

39

あなたは、単一のテストを実行するために、コマンドラインで-nオプションを渡すことができます:

「test_my_method」はあなたが実行したいテストメソッドの名前である
ruby my_test.rb -n test_my_method 

+1

+1まさに私が欲しいものです。しかし、私は6分後にしか受け付けません。 – pierrotlefou

+3

長いオプションを好むなら、フルオプションは '--name'です。 –

+3

また、regexをサポートしています:ruby my_test.rb -n /test_.*/ – imwilsonxu

8

非シェルソリューションを探す場合、TestSuiteを定義できます。

例:実際の生活の中で

gem 'test-unit' 
require 'test/unit' 
require 'test/unit/ui/console/testrunner' 

#~ require './demo' #Load the TestCases 
# >>>>>>>>>>This is your test file demo.rb 
class MyTest < Test::Unit::TestCase 
    def test_1() 
    assert_equal(2, 1+1) 
    assert_equal(2, 4/2) 

    assert_equal(1, 3/2) 
    assert_equal(1.5, 3/2.0) 
    end 
end 
# >>>>>>>>>>End of your test file 


#create a new empty TestSuite, giving it a name 
my_tests = Test::Unit::TestSuite.new("My Special Tests") 
my_tests << MyTest.new('test_1')#calls MyTest#test_1 

#run the suite 
Test::Unit::UI::Console::TestRunner.run(my_tests) 

、テストクラスのMyTestは、元のテストファイルからロードされます。

関連する問題