Автоматическое тестирование с WinForms и NUnit - PullRequest
2 голосов
/ 06 февраля 2010

Я использую Cruise Control.NET и NAnt для автоматического запуска тестов NUnit на нашей базе кода. Некоторые тесты приводят к отображению форм Windows. Когда эти тесты запускаются вручную из VS или NUnit GUI, они работают нормально. При запуске через службу круиз-контроля я получаю следующее исключение:

System.InvalidOperationException : Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

Кроме полного исключения теста или его переписывания, чтобы форма не отображалась, есть ли другой способ изменить тест или заставить NUnit запускать эти тесты при вызове из службы?

Ответы [ 3 ]

1 голос
/ 06 февраля 2010

Обычно я отмечаю такие тесты атрибутом [Explicit], чтобы они запускались только тогда, когда я запускаю их явно, а не на сервере CCNET. Другой подход может состоять в том, чтобы смоделировать поведение экрана, чтобы не было необходимости его показывать.

1 голос
/ 06 февраля 2010

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

Однако я бы рекомендовал держать разные уровни тестирования отдельно друг от друга. Если тест усложняется, т. Е. Для его выполнения требуется более сложная настройка (например, специальное взаимодействие с пользователем), этот тест является скорее интеграционным или приемочным тестом, чем модульным тестом (даже если он использует NUnit).

1 голос
/ 06 февраля 2010

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

...