Как вы тестируете приложение и код пользовательского интерфейса?

10

Я люблю писать модульные тесты и согласен с тем, что они являются отличным способом тестирования кода, предотвращения регрессий и т. Д. Однако я не могу их писать, поскольку подавляющее большинство кода, над которым я работаю изо дня в день, - это приложения. код, который отображает пользовательский интерфейс для пользователя. Есть ли хороший способ модульного тестирования кода приложения? Каковы лучшие практики здесь?

Я не ищу конкретного ответа, такого как структура и т. Д. Но, скорее, в целом, как вы подходите к этой проблеме?

Джастин этир
источник
Что такое «код приложения, отображающий пользовательский интерфейс»? Вы говорите о C в MVC?
Мартин Уикман
Я говорю о любом виде графического интерфейса - JavaScript / HTML, C ++ с MFC, WinForms, WPF и т. Д.
Джастин Этье
MVVM прост в модульном тестировании. См. Шаблон команды
Амир Резаи
@amir - Есть ли у вас какие-либо ссылки или дополнительная информация?
Джастин Этье

Ответы:

8

Для проверки реального пользовательского интерфейса Selenium работает хорошо.

Если вам нужны реальные модульные тесты, ваша стратегия состоит в том, чтобы вытолкнуть как можно большую часть логики из реального пользовательского интерфейса, обычно в объекте ViewModel. Затем вы можете написать модульные тесты для объекта ViewModel.

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

Роберт Харви
источник
Это хороший дизайн для SoC, в интерфейсе не должно быть доменной / бизнес-логики. Большая часть клиентской логики - интерактивность / валидация может идти в пользовательском интерфейсе с JavaScript, который является модульно тестируемым.
StuperUser
1

Я добился успеха в модульном тестировании моего приложения с помощью MSTest, тестировании Javascript с помощью QUnit и получении результатов этих тестов с помощью одного модульного теста MSTest, в котором используется WatiN (мне предложили Selenium , который также имеет возможность записывать тесты, но нашел WatiN лучше для автоматизации чисто).

StuperUser
источник