У меня есть существующее приложение VS 2005 Std .NET Compact Framework, в котором я хочу провести некоторые серьезные рефакторинги. В настоящее время нет модульного тестирования, но я хочу добавить это, прежде чем возиться с кодом. У меня нет практического опыта с модульным тестированием, хотя я знаю теорию (просто никогда не удосужился ее реализовать; я знаю: позор мне :-)) Вот некоторые вопросы, которые я обдумываю в данный момент:
a) Следует ли мне, как новичку, использовать NUnit или NUnitLite (который утверждает, что его проще использовать)?
б) Должен ли я стремиться запускать тесты на мобильном устройстве или на настольном компьютере (конечно, за исключением кода для конкретного устройства)? В настоящее время рабочий стол выглядит более привлекательным, особенно для включения тестов в автоматизированные сборки...
c) Как класс, который я хочу протестировать, обычно включается в тестовый проект? Мое приложение представляет собой .EXE-файл, т.е. я не могу просто сослаться на него, как на .DLL-сборку из тестового проекта (или можно? Никогда так не пробовал...). Я проверил различные учебники NUnit, но либо не нашел упоминания об этом, либо в одном учебнике было предложено скопировать и вставить класс, который я хочу протестировать, в тестовый проект (юк!). Должен ли я ссылаться на исходный файл исходного кода в своем тестовом проекте? Как насчет частных методов или зависимостей от других классов?
d) Должен ли я начать изменять свой исходный код, чтобы обеспечить лучшую тестируемость, например. сделать частные методы общедоступными, отделить и т. д.? Это немного похоже на рефакторинг перед тем, как можно будет протестировать, что мне не нравится ... Или лучше вообще не трогать исходный код в начале, даже если это означает меньшее покрытие кода и т. д.?
e) Должен ли я изучить какие-либо другие инструменты или надстройки, которые использует большинство людей?
Заранее спасибо за любые ответы (я также ценю ответы, если они относятся только к одному или нескольким из вышеперечисленных пунктов).