Тестирование комплекса Custom WinForms Control - PullRequest
4 голосов
/ 20 апреля 2011

Я занимаюсь разработкой довольно сложного пользовательского элемента управления .NET (40K строк кода), но испытываю некоторые трудности при его тестировании.

Я сделал несколько примеров проектов, демонстрирующих основные функции элемента управления, но можно протестировать только небольшиеподмножество состояний и операций управления.

Модульные тесты также бесполезны из-за этих проблем:

  • огромное количество вариантов использования (например, описание «выбора элементов» может занять около 4 страниц).of specs)
  • множество способов сделать одно и то же (а также из пользовательского кода или графического интерфейса пользователя)
  • элемент управления имеет много состояний под-состояний, и что-то может не работать в каждомсостояние
  • как проверить поддержку времени разработки?

Я знаю, что это распространенная проблема тестирования GUI, поэтому я хотел бы спросить вас , есть ли какие-либо скважины-стабилизированные практики тестирования пользовательских визуальных компонентов ?

Спасибо за любые советы.

1 Ответ

1 голос
/ 20 апреля 2011

Главное - ограничить тестирование GUI до минимума, потому что это самый дорогой способ тестирования. В 40 тысячах строк кода, я уверен, что 90% кода вообще не работают с элементами графического интерфейса WinForm. Таким образом, большая часть этого может быть покрыта модульными тестами, но это зависит от того, как вы структурировали свой код.

Что нужно учитывать:

  • Принципы SOLID, особенно принцип единой ответственности (SRP) - вместо пары огромных «божьих» классов вы должны полагаться на большое количество небольших «служебных» интерфейсов и классов, которые выполняют только одно и делают это хорошо , Вы можете написать отдельные тесты для них, а затем собрать их в более широкую картину, как только узнаете, что они работают нормально.
  • Шаблон MVP (фактически пассивное представление): код графического интерфейса WinForm должен быть только тонким слоем (представление), все остальное должно быть в Presenters и the Model.
  • Ведущий Первый подход .

Я работаю над относительно сложным приложением WinForms , и эти шаблоны никогда не подводили меня.

Что касается тестирования GUI, я использую UI Automation , но только для некоторых стандартных случаев. Все остальное покрыто юнит-тестированием без GUI.

...