Ame*_*mey 6 ruby parallel-processing unit-testing testunit
我在一个ruby脚本中有4个测试,我使用命令运行
ruby test.rb
Run Code Online (Sandbox Code Playgroud)
外观看起来像
Loaded suite test
Started
....
Finished in 50.326546 seconds.
4 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Run Code Online (Sandbox Code Playgroud)
我想要实现的是,并行运行所有4个测试而不是顺序测试.像4个线程一样运行一个测试,有效地将执行时间减少到4个测试中最慢的时间+并行执行的时间很少.
我遇到了这个,但这似乎并行运行多个ruby测试文件 - 比如说我有test1.rb,test2.rb test3.rb,然后所有这三个文件将并行运行.
任何帮助将不胜感激.
TestSuite
我尝试了和的组合Thread
:
gem 'test-unit'
require 'test/unit'
require 'test/unit/ui/console/testrunner'
# we're running the tests, so we don't want Test::Unit to automatically run everything for us. See http://www.natontesting.com/2009/07/21/stop-rubys-testunit-suite-files-running-all-your-tests/
Test::Unit.run = true
class MyTest < Test::Unit::TestCase
def test_1()
assert_equal( 2, 1+1)
end
def test_2()
assert_equal( 2, 4/2)
end
def test_3()
assert_equal( 1, 3/2)
end
def test_4()
assert_equal( 1.5, 3/2.0)
end
end
#create TestSuites.
test_1 = Test::Unit::TestSuite.new("Test 1")
test_1 << MyTest.new('test_1')
#Same a bit shorter
test_2 = Test::Unit::TestSuite.new("Test 2") << MyTest.new('test_2')
test_3 = Test::Unit::TestSuite.new("Test 3") << MyTest.new('test_3')
test_4 = Test::Unit::TestSuite.new("Test 4") << MyTest.new('test_4')
#run the suites
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_1)}
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_2)}
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_3)}
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_4)}
Run Code Online (Sandbox Code Playgroud)
看起来不错,但我没有进行基准测试。
输出(见下文)有点混乱,每个线程都将自己的消息发布到其他线程的消息中,但它似乎工作正常。所以也许你必须捕获每个线程的输出以获得更好的测试日志。
Loaded suite Test 4Loaded suite Test 1Loaded suite Test 2Loaded suite Test 3
Started
Started
.
Started
.
Started
.
.
Finished in 0.328125 seconds.
Finished in 0.328125 seconds.
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
Finished in 0.765625 seconds.
Finished in 0.546875 seconds.
100% passed
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
3.05 tests/s, 3.05 assertions/s
100% passed
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
3.05 tests/s, 3.05 assertions/s
100% passed
100% passed
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3787 次 |
最近记录: |