UI и тестирование событий - PullRequest
       15

UI и тестирование событий

2 голосов
/ 01 сентября 2008

Так что я знаю, что юнит-тестирование обязательно. Я понял, что TDD - это то, что нужно, когда добавляются новые модули. Даже если на практике я этого не делаю. Немного похоже на комментирующий код, правда.

Реально то, что я изо всех сил пытаюсь понять, как выполнить модульное тестирование пользовательского интерфейса и, в более общем смысле, объектов, генерирующих события: элементы управления пользователя, асинхронные операции с базами данных и т. Д.

Так много моего кода относится к событиям пользовательского интерфейса, что я не могу понять, как вообще начать модульное тестирование.

Там должны быть какие-то учебники для начинающих? Некоторые советы и подсказки?

Я вообще работаю в C # (2.0 и 3.5), но я не уверен, что это строго относится к вопросу.

Ответы [ 4 ]

2 голосов
/ 01 сентября 2008

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

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

1 голос
/ 01 сентября 2008

Прочтите это , если вы боретесь с UI Testing

Ручное тестирование пользовательского интерфейса, при котором затраты на автоматизацию минимальны. Все безжалостно тестируем под UI. Используйте Humble Dialog, MVC или варианты, чтобы логика и интерфейс различались и были слабо связаны.

0 голосов
/ 01 сентября 2008

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

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

0 голосов
/ 01 сентября 2008

Вы должны отделить логику и представление. Используя шаблоны MVP (Model-View-Presenter) / MVC (Model-View-Controller), вы можете тестировать свою логику, не полагаясь на события пользовательского интерфейса. Также вы можете использовать White Framework для имитации ввода пользователя. Я настоятельно рекомендую вам посетить Microsoft Центр разработки шаблонов и практик , особенно взгляните на составной блок приложений и Prism - вы можете получить много информации о тестовом дизайне.

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