Мене попросили зробити невеликий побічний проект, щоб поставити просту заявку одному з наших клієнтів. Зазвичай я б працював над бек-кодом, де я вирішив усі свої потреби в тестуванні, і я ще не мав сумнівної насолоди писати тести для GUI, тому мені трохи незрозуміло, як я повинен налаштувати код тестування та інструменти для EXE.
Перший мій інстинкт полягав у тому, щоб просто включити тести з кодом програми, однак це вимагало б поставити ряд залежностей від тесту, які мені доручали спеціально не надсилати замовнику. Я також не в змозі вичавити будь-яку готівку за цільовим інструментом тестування, тому мені потрібно використовувати підручні інструменти, які я маю під рукою ( StoryQ , RhinoMocks і NUnit), що насправді має бути більш ніж достатньо для перевірки поведінки простого додатка GUI. Наскільки я бачу, це дозволяє мені намагатися досягти хорошого балансу між збереженням дизайну дійсно простою, або цілеспрямовано надмірною інженерією заради тестів. Здається, я або будую додаток із діловою логікою в окремій бібліотеці і тестую проти бібліотеки, як зазвичай, або знаходжу якийсь інший механізм, який дозволяє мені виконувати виконувану програму, не порушуючи додаткових модулів, яких дизайн програми не робить дійсно потрібно.
Редагувати:
Зауважте, що це питання стосується того, як структурувати взаємозв’язок між NUnit та моїм виконуваним файлом - на відміну від DLL -, а не про те, як розділити логіку презентації та бізнесу.
/ Редагувати
Отже, моє питання:
- Чи існує конкретний / рекомендований метод для налаштування простого додатка графічного інтерфейсу з одиничними тестами, який дозволить мені адекватно перевірити стан та поведінку, використовуючи інструменти, які я маю під рукою, і не вдаючись до надмірної інженерії?
- Я пропустив щось принципове про те, як слід викликати / налаштувати NUnit під час тестування EXE (на відміну від DLL)?
- Чи можете ви надати або вказати мені на приклади, як досягти всього цього?
Я розумію, що для цього може бути більше одного способу, тому я шукаю конкретні вказівки щодо впровадження, виходячи з вашого досвіду.