Как игнорировать тест в самом методе тестирования JUnit - PullRequest
4 голосов
/ 05 мая 2010

У нас есть ряд интеграционных тестов, которые не проходят, когда наш промежуточный сервер отключается для еженедельного обслуживания. Когда промежуточный сервер не работает, мы отправляем конкретный ответ, который я могу обнаружить в моих интеграционных тестах. Когда я получаю этот ответ вместо того, чтобы проваливать тесты, меня интересует, можно ли пропустить / проигнорировать этот тест, даже если он уже запущен. Это сделало бы наши отчеты об испытаниях немного чище.

У кого-нибудь есть предложения?

Ответы [ 3 ]

11 голосов
/ 05 мая 2010

Прошло некоторое время с тех пор, как я использовал JUnit, но нет ли способа Assume, что условие верно? Я думаю, что это имеет другое значение, чем пройти / не сдать тест. В вашем отчете должно быть указано, что тест не проводился.

Отредактировано, чтобы добавить: Предположим, класс

0 голосов
/ 05 мая 2010

Самое простое решение - разделить ваши тесты на два набора: интеграционные тесты и чисто модульные тесты. Затем разработайте сценарий или другие автоматизированные средства, чтобы определить, работает ли сервер, и просто пропустите комплект интеграционных тестов, если сервер не работает. Но если по какой-то причине группировать тесты по таким комплектам непрактично, вот альтернатива:

Вы можете создать пользовательский Runner , который пропускает тесты, если сервер недоступен. Вы можете либо запрограммировать бегуна, чтобы он самостоятельно определял доступность сервера, либо определить его через некоторый внешний процесс, такой как сценарий, который выполняется до фазы тестирования и устанавливает системное свойство в JVM, которое бегун может проверить (например, передать -Dcom.company.testrun.integration=false аргумент командной строки).

Вы можете включить свой пользовательский бегун, используя аннотацию @RunWith в ваших интеграционных тестовых классах, и использовать встроенный бегун для всех других тестов, чтобы на них не влияли. В качестве альтернативы вы можете использовать своего бегуна для всех тестов и придумать новую аннотацию (например, @IntegrationTest), которую вы используете для украшения ваших методов интеграционных тестов. Используя последний подход, бегун применяет свою логику пропуска, только если сервер недоступен и метод теста имеет специальную аннотацию.

0 голосов
/ 05 мая 2010

В своем тесте вы могли проверить это условие перед выполнением Assert.whothing. Если тест не пройден, просто вернитесь из метода без выполнения оставшейся части кода / подтверждений.

...