тестовые случаи junit для сокета - PullRequest
2 голосов
/ 30 августа 2011

У меня есть приложение, которое поддерживает несколько исходящих веб-сервисов. я используя HttpClient, и мне нужно добавить время ожидания службы, потому что один из внешние URL-адреса, к которым я обращаюсь, требуют много времени для ответа (иногда). Я пытаюсь добавить несколько тестовых случаев junit, чтобы убедиться, что мой тайм-аут работает должным образом. У меня есть что-то вроде этого, где указанное значение времени ожидания чуть больше настроенного времени ожидания сокета -

@Test (timeout=6000)
public void testTimeOut() {
    notifier.performGetonUrl(getTestUrl()); 
}

Не думаю, что это хорошо. Есть ли лучшие тесты, которые я мог бы использовать?

1 Ответ

1 голос
/ 01 сентября 2011

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

Для своих изолирующих элементов я создаю их так, чтобы они тестировали только тестируемый класс. Я использую EasyMock , чтобы макетировать все сотрудничающие классы. Так что в этом случае я бы создал макет для httpClient. Я бы настроил тест, в котором mock выдает исключение, а затем утверждаю, что тестируемый класс обрабатывает исключение, как и ожидалось. Фрагменты кода ниже могут дать вам представление о том, что я имею в виду.

private DefaultHttpClient httpClient;
private ClassUnderTest classUnderTest;

@Before
public void setUpTest() {
     httpClient = createMock(DefaultHttpClient.class);

@Test
public void performARequestThatThrowsAnIOException() {
     expect(httpClient.execute(post)).andThrow(iOException);

     replayAll();

     try {
         classUnderTest.executeMethodUnderTest();
         fail("This test should throw an IOException.");
     } catch (IOException e){
         verifyAll();
     }

Выше предполагается, что метод в тестируемом классе выдает исключение. Если исключение поймано, то вы бы написали выше по-другому.

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