Автоматическое тестирование частных методов, связанных с GUI - PullRequest
1 голос
/ 25 марта 2010

Когда дело доходит до программирования GUI (по крайней мере, для веб), я чувствую, что часто единственное, что было бы полезно для модульного тестирования, это некоторые из частных методов *. В то время как модульное тестирование имеет смысл для внутреннего кода, я чувствую, что оно не совсем подходит для классов GUI.

Каков наилучший способ добавить автоматическое тестирование?


* Почему я думаю, что единственные методы, полезные для тестирования, являются закрытыми:

Часто, когда я пишу классы GUI, у них даже нет открытых методов, кроме конструктора. Публичные методы, если они есть, тривиальны, и конструктор выполняет большую часть работы, вызывая закрытые методы.

Они получают некоторые данные от сервера, делают много тривиальных выводов и подают данные в конструктор других классов, содержащихся в нем, добавляя слушателей, которые вызывают (более или менее напрямую), вызовы сервера ... Большинство из них довольно тривиальные (самая сложная часть - это макет: css, IE и т. д.), но иногда я создаю какой-то закрытый метод, который выполняет некоторые продвинутые трюки, которые я определенно не *1015* хочу видеть публично (поскольку он тесно связан реализация макета, и, вероятно, изменится), но является достаточно сложным, чтобы сломать. Они часто вызываются только конструктором или повторно событиями в коде, а не какими-либо открытыми методами вообще.

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

(Кстати: в настоящее время я использую GWT, но я чувствую, что это применимо к большинству языков / сред, которые я использовал при кодировании для GUI)

1 Ответ

1 голос
/ 26 марта 2010

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

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

Вы можете тестировать такую ​​библиотеку Presentation по своему усмотрению, а также использовать ее для выполнения Подкожные пробы .

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