JUnit: пауза для пользовательского ввода - PullRequest
3 голосов
/ 02 декабря 2009

Я учу JUnit. Поскольку мое приложение имеет графический вывод, я хочу иметь возможность просматривать вывод и вручную проходить или не сдавать тест на основе того, что вижу. Он должен подождать меня некоторое время, а затем потерпит неудачу, если истечет время ожидания.

Есть ли способ сделать это в JUnit (или его расширениях), или я должен просто вызвать диалоговое окно и assertTrue на выходе? Кажется, что это может быть общая проблема с существующим решением.

Редактировать : Если я не должен использовать JUnit для этого, что я должен использовать? Я хочу проверять сборку вручную и выполнять модульное тестирование автоматически, и было бы замечательно, если бы две инфраструктуры тестирования сработали.

Ответы [ 5 ]

6 голосов
/ 02 декабря 2009

Принятие / отклонение теста вручную отменяет цель использования автоматизированной среды тестирования. JUnit не предназначен для такого рода вещей. Если вы не найдете способ создать и внедрить макет объекта, представляющего ваше устройство вывода, вы должны рассмотреть альтернативы (на самом деле не знаю, извините).

Однажды я написал автоматические тесты для компонента декодирования видео. Я выгрузил декодированные данные в файл, используя какой-то другой декодер в качестве эталона, а затем сравнил выходные данные моего декодера с данными, используя PSNR каждой пары изображений. Это не на 100% самодостаточно (нужны внешние файлы в качестве ресурсов), но, по крайней мере, оно было автоматизировано и отлично работало для меня.

3 голосов
/ 02 декабря 2009

Хотя вы, вероятно, могли бы это закодировать, это не то, чем занимается JUnit. Речь идет об автоматизированных тестах, а не о ручных тестах. Как правило, этот тест «выглядит ли он правильно» рассматривается как интеграционный тест, поскольку его очень сложно правильно автоматизировать, чтобы не допускать постоянных тривиальных изменений.

Взгляните на Аббат , чтобы дать вам более надежный способ тестирования вашего графического интерфейса.

1 голос
/ 02 декабря 2009

Модульные тесты не должны требовать вмешательства человека. Если вам нужно, чтобы пользователь совершил какое-либо действие, я думаю, вы делаете это неправильно.

Если вам нужен человек для проверки чего-либо, не делайте этого как часть ваших юнит-тестов. Просто сделайте этот шаг обязательным для вашего отдела тестирования при сборке QA'ing. (это все еще работает в вашем отделе контроля качества, только вы.)

0 голосов
/ 07 декабря 2009

Взгляните на FEST-Swing . Это простой способ автоматически протестировать ваш графический интерфейс.

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

0 голосов
/ 02 декабря 2009

Я рекомендую использовать ваши модульные тесты для Моделей, если вы используете MVC или какой-либо служебный метод (т. Е. Для Swing распространены методы отображения цветов). Если у вас есть хороший набор модульных тестов для таких вещей, как поведение модели, если у вас есть ошибка пользовательского интерфейса, это поможет сузить ваш поиск.

Визуальные модульные тесты очень сложны, в компании, в которой я работал, они пробовали эти визуальные тесты, но небольшие различия в видеокартах могли привести к неудачным тестам. В конце концов, именно здесь требуется хорошая команда Q / A.

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