Тестовый набор Junit 4 и индивидуальные тестовые классы - PullRequest
6 голосов
/ 22 февраля 2010

У меня есть набор тестов JUnit 4 с методами BeforeClass и AfterClass, которые выполняют настройку / демонтаж для следующих классов тестирования. Что мне нужно, так это запускать тестовые классы сами по себе, но для этого мне нужен сценарий установки / разрыва (BeforeClass и AfterClass или что-то подобное) для каждого тестового класса. Дело в том, что когда я запускаю комплект, я не хочу выполнять настройку / разборку до и после каждого тестового класса, я хочу выполнить установку / разборку из комплекта тестов (один раз). Является ли это возможным ? Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 22 февраля 2010

Я не знаю ни одного стандартного способа сделать это с помощью JUnit. Причина этого, как вы, вероятно, уже знаете, заключается в том, что ваши тесты должны выполняться независимо друг от друга. Это относится к «нормальным» методам настройки / демонтажа, которые выполняются до и после каждого метода тестирования. Хотя настройка классов и их разбор немного отличаются - хотя я все же предпочел бы проводить свои тесты независимо и не входить в проблемную зону.

Однако, если вы действительно уверены в том, что делаете, вы можете использовать глобальный флаг, чтобы сигнализировать о том, должен ли запускаться режим установки / разрыва класса, и проверять его состояние в методах настройки / разрыва класса. В ваш набор тестов вы могли бы включить специальный класс в качестве самого первого, который выполняет только настройку и устанавливает глобальный флаг, чтобы указать реальным тестовым примерам, что их методы установки / разрыва класса не должны запускаться. Точно так же специальный последний класс в наборе может выполнить код разрыва. Предупреждение: я боюсь, что JUnit не гарантирует порядок выполнения тестовых классов внутри набора, хотя, скорее всего, он выполняет их в указанном порядке - но это всего лишь детали реализации. Попробуйте, это может сработать для вас - но нет никакой гарантии, что он всегда будет делать то, что вы ожидаете.

3 голосов
/ 22 февраля 2010

Если у вас jUnit 4.7+, я рекомендую изучить новую функцию под названием Правила (которая описана в в этом сообщении ). Они могут быть не совсем тем, что вы хотите, но они, вероятно, лучшее, что вы получаете с jUnit.

Предположительно, TestNG обладает лучшими возможностями группировки тестов, но я сам пока не разбирался в этом.

0 голосов
/ 22 февраля 2010

Нет, в JUnit нет стандартного способа сделать это, хотя вы можете взломать что-нибудь, как предложил Петер Тёрёк.

Обратите внимание, что вы более или менее злоупотребляете JUnit в этом. Весь смысл юнит-тестов в том, что они независимы друг от друга. Это связано с тем, что зависимости между тестами создают полный кошмар обслуживания (тесты не выполняются, потому что они выполняются в неправильном порядке).

Так что я бы посоветовал вам настоятельно рассмотреть вопрос, не лучше ли просто всегда запускать установку ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...