UI Testing Framework + Непрерывная интеграция? - PullRequest
10 голосов
/ 10 февраля 2009

Итак, у меня есть приложение, которое я унаследовал, и я хочу создать автоматизированный набор тестов. Приложение не было разработано с учетом тестируемости, а код представляет собой «большой шарик грязи». Мой план состоял в том, чтобы использовать среду тестирования UI Automation и создавать набор тестов на уровне пользовательского интерфейса, пока у меня не будет достаточно покрытия, чтобы я мог с уверенностью начать рефакторинг и вводить некоторые швы в код для улучшения тестируемости и дизайна.

Это WinNet-приложение .Net, и мне известны следующие две платформы:

NUnitForms

и

Проект Белый

Из того, что я прочитал, обе платформы создают проблемы при попытке запуска как части автоматической сборки (Continuous Integration) из-за того факта, что большинство продуктов CI работают как служба Windows, и если пользовательский интерфейс использует модальные диалоговые окна, приложение будет умереть ужасной смертью Я использую CruiseControl.Net в качестве инструмента CI.

У кого-нибудь есть предложения, чтобы обойти эту проблему? Альтернативная основа для использования, которая может улучшить ситуацию?

Спасибо

Dylan

Ответы [ 5 ]

7 голосов
/ 10 февраля 2009

NUnitForms имеет функцию «скрытого рабочего стола», которая позволит вам запускать модульные тесты из cc.net.

http://automaticchainsaw.blogspot.com/2007/09/winforms-testing-using-nunitforms.html http://automaticchainsaw.blogspot.com/2007/09/hidden-desktops-and-nunitforms.html

3 голосов
/ 11 февраля 2009

Вы можете запустить круиз-контроль через консольное приложение, чтобы оно могло иметь интерактивный доступ к рабочему столу. Он не восстановится автоматически, если сервер будет перезагружен или он выйдет из строя, но по крайней мере вы сможете это сделать.

Тем не менее, подход, который большинство людей использует при автоматическом тестировании пользовательского интерфейса (winforms, wpf или web), заключается в запуске всех неинтерактивных тестов через сервер сборки. После прохождения этих тестов они развертывают приложение в тестовой среде и вручную запускают тестовый запуск для вновь созданной версии кода.

Это дает людям возможность перезагрузить тестовую среду (важно для тестирования пользовательского интерфейса), а также проверить, что новая версия приложения была построена правильно и что все модульные тесты пройдены. В конце концов, нет смысла запускать тесты пользовательского интерфейса, если вы знаете, что юнит-тесты упали. : -)

2 голосов
/ 10 февраля 2009

Я еще не пробовал, но есть UI Automation Framework от Microsoft:

1 голос
/ 06 июля 2009

Мы выполняли приемочные тесты непрерывной интеграции в консольном режиме, а не в качестве службы Windows в зарегистрированном виртуальном ПК. Это сработало для нас.

0 голосов
/ 28 сентября 2014

Взгляните на этот подход . Подробная информация содержится в вики проекта .

...