У меня есть два модульных теста, которые должны делиться множеством обычных тестов с немного разными настройками. Если я напишу что-то вродеКак унаследовать абстрактные модульные тесты в Ruby?
class Abstract < Test::Unit::TestCase
def setup
@field = create
end
def test_1
...
end
end
class Concrete1 < Abstract
def create
SomeClass1.new
end
end
class Concrete2 < Abstract
def create
SomeClass2.new
end
end
then Concrete1, похоже, не наследует тесты из Abstract. Или, по крайней мере, я не могу заставить их работать в затмении. Если я выберу «Запустить все тестовые таблицы» для файла, содержащего Concrete1, тогда выполняется Abstract, хотя я не хочу, чтобы это было. Если я укажу Concrete1, то он вообще не выполнит никаких тестов! Если я укажу test_1 в Concrete1, то он жалуется, что не может найти его («uncaught throw: invalid_test (ArgumentError)»).
Я новичок в Ruby. Что мне здесь не хватает?
Спасибо - это здорово! Это помогло мне, наконец, решить http://stackoverflow.com/questions/8888614/how-to-write-and-inherit-from-an-abstract-subclass-of-actioncontrollertestcase, который задан в контексте функциональности Rails (контроллер) тестов и, как таковая, имеет немного дополнительную проблему. –
Еще одно замечание: к сожалению, похоже, что такой подход не позволяет переопределить включенные тесты. Я предполагаю, что для этого понадобится другой взлом :-( –
Это не имеет смысла для меня. Если тестовые классы должны непосредственно наследоваться от Test :: Unit :: TestCase, то как ActiveSupport :: TestCase и ActionController :: TestCase не вызвать проблему, описанную в этом вопросе?Разве они оба не являются дополнительными уровнями наследования между Test :: Unit :: TestCase и конкретными классами? –