Проблема в том, что, насколько я могу судить, Test::Unit
отслеживает, какие классы наследуются от Test::Unit::TestCase
, и в результате только будет запускать тесты из классов, напрямую наследуется от него.
Способ обойти это - создать модуль с нужными вам тестами, а затем включить этот модуль в классы, производные от Test::Unit::TestCase
.
require 'test/unit'
module TestsToInclude
def test_name
assert(self.class.name.start_with?("Concrete"))
end
end
class Concrete1 < Test::Unit::TestCase
include TestsToInclude
def test_something_bad
assert(false)
end
end
class Concrete2 < Test::Unit::TestCase
include TestsToInclude
def test_something_good
assert(true)
end
end
Выход:
Loaded suite a
Started
.F..
Finished in 0.027873 seconds.
1) Failure:
test_something_bad(Concrete1) [a.rb:13]:
<false> is not true.
4 tests, 4 assertions, 1 failures, 0 errors
shell returned 1