модульное тестирование на Java многопоточный сокет сервер [дубликат]


На этот вопрос уже есть ответ здесь:

Как проводить модульные тесты на многопоточном сервере?

Предположим, что у меня есть сервер, который расширяет класс потока, и каждый подключенный клиент будет подпотоком. Этот сервер принимает нового клиента с помощью socket api.

Что такое хороший способ сделать модульные тесты на этом сервере? Что должны охватывать модульные тесты? Интересно, какмоделировать клиентов .

Обновление: Я решил поделиться своим кодом на github

5 2

5 ответов:

Ответ-JMeter. Пожалуйста, прочитайте здесьJava sockets - How to simulate multiple clients .

Примечание : вы пытаетесь создать функциональные тесты, но перед этим вам нужно сделать модульные тесты для ваших классов. Это действительно важный шаг перед функциональным тестированием.

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

@Test(threadPoolSize = 5, invocationCount = 10, timeOut = 1000)
public void multithreadedTestMethdo(){
    ....
}

Jmeter для моделирования нескольких и одновременных клиентов и профилировщика, связанного с сервером, чтобы знать, что происходит на этом сервере приложений.

Естьальтернативы jmeter, но я их не проверял. Профилировщиком может быть jconsole, который находится внутри jdk..

Для такого набора тестов достаточно старого доброго junit. Объявите AtomicInteger для подсчета ошибок. Из инициализирующего метода (с аннотацией @Before) запустите поток с сервером. Из каждого метода тестирования (с аннотацией @Test) запустите несколько потоков, представляющих клиентов, а затем выполните операцию соединения с каждым потоком. Каждый клиент и сервер, обнаружив ошибку, печатает детальную диагностику, увеличивает счетчик ошибок и завершает работу.

Также посмотрите в mocks, чтобы увидеть, насколько хорошо ваш класс "танцует". Я рекомендую mockito .