Как инструментировать тестировщиков в SUnit?

Я хочу использовать тесты SUnit в Pharo. Как правильно изменить способ запуска тестов?

Пример:

Я хочу ввести тайм-аут для тестов, каждый тест, который я запускаю, должен быть прерван после заданной задержки.

Проблема:

SUnit не имеет специального TestRunner в модели, который позволил бы мне легко вносить изменения. Я могу создать новый подкласс TestResult и использовать там API (runCase:, addError:...), чтобы получить достаточный контроль. Однако кажется странным изменить класс результата, чтобы изменить поведение при запуске тестов.

Я привык к SMark, где у меня есть специальный бегун для изменения этих вещей.


person camillobruni    schedule 01.05.2013    source источник


Ответы (1)


(ОТВЕТСТВЕННОСТЬ: я не знаю, какую версию SUnit использует Pharo, поэтому конкретный API может отличаться. Тем не менее, я надеюсь, что это немного поможет.)

Подкласс TestResult — это путь, хотя это может показаться немного странным.

Общая идея настройки нового экземпляра SUnit такова:

  • для настройки конкретного запуска сделайте это в TestResult (а именно #runCase: aTestCase debugged: aBoolean)
  • для настройки конкретного теста сделайте это в TestCase (а именно #performTest)

Я лично хочу, чтобы SUnit был максимально простым, и здесь я не вижу смысла вводить новый класс. Почему? Посмотрите на последние изменения в JUnit. :-) Я согласен, что SUnit заслуживает дополнительной документации.

Примеры реализации тайм-аута, пропуска и т. д. см. на странице TestReport в Smalltalk/X.

person J.V.    schedule 01.05.2013
comment
Я покопаюсь в версии Smalltalk/X, SUnit Pharo, я думаю, не сильно изменился. Я использовал этот подход, и он хорошо работает, если ваши тесты, которые локально требуют особого внимания. Однако, если я хочу сделать что-то глобальное, это не сработает. - person camillobruni; 01.05.2013
comment
Так что да, вы делаете подкласс TestResult, чтобы получить собственное поведение, для меня это все еще звучит неправильно :), это результат, он не должен иметь ничего общего с запуском :/. Но у Smalltalk/X гораздо лучший протокол для Результата addError:detail:, а Co в Pharo просто addError:, так что вы пропускаете половину информации. Думаю, я добавлю это для фаро. - person camillobruni; 01.05.2013