Tôi đã thử một sự kết hợp của TestSuite
và 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)}
Nó có vẻ tốt, nhưng tôi đã không kiểm tra điểm chuẩn.
Kết quả (xem bên dưới) hơi hỗn loạn, mỗi luồng sẽ đăng thông điệp của mình vào thông điệp của các chủ đề khác, nhưng dường như nó hoạt động chính xác. Vì vậy, có thể bạn phải nắm bắt đầu ra của mỗi luồng để có được nhật ký kiểm tra tốt hơn.
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
Tôi có thể xác nhận rằng parallel_tests hoạt động ở cấp tệp, không phải là những gì bạn muốn ở đây, nhưng rất tốt ở những gì nó làm. – x1a4