Модульное тестирование приложения чата Java - PullRequest
3 голосов
/ 26 апреля 2010

Я разработал базовое приложение чата на Java. Он состоит из сервера и нескольких клиентов. Сервер постоянно отслеживает входящие сообщения и передает их всем клиентам. Клиент состоит из графического интерфейса пользователя Swing с текстовой областью (для сообщений, отправляемых сервером и другими клиентами), текстовым полем (для отправки текстовых сообщений) и кнопкой (ОТПРАВИТЬ). Клиент также постоянно следит за входящими сообщениями от других клиентов (через Сервер). Это достигается с помощью потоков и прослушивателей событий, и приложение работает как положено.

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

Вот несколько тестов, которые я мог бы предложить:
1) Максимальный лимит текстового поля
2) Клиент может подключиться к Серверу
3) Сервер может подключиться к клиенту
4) Клиент может отправить сообщение
5) Клиент может получить сообщение
6) Сервер может отправить сообщение
7) Сервер может получить сообщение
8) Сервер может принимать соединения от нескольких клиентов

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

Ответы [ 3 ]

5 голосов
/ 26 апреля 2010

Вы должны протестировать сервер и клиента изолированно.

Способ сделать это - использовать макет объектов для макета сервера (для тестирования клиента) или клиента (для тестирования сервера).

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

Для Java, посмотрите на Mockito mocking framework.

2 голосов
/ 26 апреля 2010

Глава 7 из Beautiful Testing описывает тестирование XMPP-чата . Я рекомендую прочитать главу. Вывод носит иллюстративный характер и может содержать несколько указателей для вашего приложения чата:

В нашем стремлении создать прекрасные тесты для проверки реализаций протокола XMPP мы начали с тестирования простых протоколов «запрос-ответ» на самом низком уровне: данные, отправленные из сетевого потока. Обнаружив, что эта форма тестирования не очень хорошо масштабируется, мы абстрагировали протокол до более высокого уровня, вплоть до того момента, когда в тестах использовались только высокоуровневые структуры данных. Проведя тестирование поведения протокола на высоком уровне, мы смогли написать тесты для более сложных протоколов без ущерба для ясности тестов. Для самых сложных протоколов написание сценариев помогло охватить все возможные ситуации, которые могут возникнуть в сеансе протокола. Наконец, поскольку XMPP является открытым протоколом с множеством различных реализаций, очень важно протестировать приложение XMPP в реальной сети, чтобы обеспечить совместимость с другими реализациями. Регулярно выполняя небольшие тестовые программы, мы смогли протестировать систему целиком и проверить, хорошо ли работает наша реализация протокола с другими объектами в сети.

2 голосов
/ 26 апреля 2010

Модульные тесты должны быть направлены на использование общедоступных API-интерфейсов каждого класса, который вы создали. Однако при работе с Swing все становится немного сложнее. Рассмотрим swingUnit для модульного тестирования компонентов Swing.

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