модульное тестирование на Java многопоточный сокет сервер [дубликат]
На этот вопрос уже есть ответ здесь:
Как проводить модульные тесты на многопоточном сервере?
Предположим, что у меня есть сервер, который расширяет класс потока, и каждый подключенный клиент будет подпотоком. Этот сервер принимает нового клиента с помощью socket api.
Что такое хороший способ сделать модульные тесты на этом сервере? Что должны охватывать модульные тесты? Интересно, какмоделировать клиентов .
Обновление: Я решил поделиться своим кодом на github
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 .