Тестовый случай Junit: соединение отказано - PullRequest
1 голос
/ 07 сентября 2010

Я пишу тест Junit (4.x), чтобы проверить, что происходит, когда веб-приложение не работает.

Когда я нажимаю URL-адрес в браузере, я получаю сообщение «Соединение отказано».

Я не уверен, что нужно проверять в утверждениях assert.

Проверять ли заголовок этого сообщения? - urlConnection.getResponseMessage () или

просто скажите (ожидается = java.net.ConnectException) перед тестовым набором. Я чувствую, что последнее недостаточно конкретно.

РЕДАКТИРОВАТЬ: Сейчас я использую комбинацию (ожидается = java.net.ConnectException) и assertEquals (502, urlConnection.getResponseCode). Тест проходит.

Спасибо, Pratyusha.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Прежде всего, ваши юнит-тесты не должны сильно зависеть от внешних сущностей. То, что вы описываете, это скорее интеграционный тест .

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

Однако из вашего поста мне не ясно, что вы на самом деле тестируете: веб-клиент, который зависит от сервера? Веб-приложение, которое вызывает другое веб-приложение? Для разных сценариев могут быть подходящими разные тесты.

0 голосов
/ 07 сентября 2010

Интеграционные тесты в junit - это нормально. Многие широко используемые проекты с открытым исходным кодом используют этот подход. См. CXF или Arquillian для примеров этого подхода.

По вашему вопросу ... вам нужно решить, какое поведение вам нужно, а затем проверить это.

Например, в этом случае вы, вероятно, захотите проверить код ответа, который возвращает сервер. Или, если «отказано в соединении» действительно является желаемым поведением, тогда должно быть достаточно проверки (ожидается = java.net.ConnectException).

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