Если вы написали свое заявление, по некоторым данным вы теперь будете работать с «Устаревшим кодом» (основанным на книге Майкла Фезера «Эффективная работа с унаследованным кодом» - под «Унаследованным кодом» «Перья» означает любую систему, адекватно охвачены юнит-тестами).
Как упоминает @bAN, вам придется проделать большую работу, чтобы изолировать методы, которые вы будете вызывать, используя фабричные методы , которые можно заменить на "заглушки" , используя интерфейсы или с помощью override
. Без этого вы будете проводить интеграционное тестирование (как вы также будете тестировать интеграцию между различными атомами функциональности). Но соотношение методов испытаний 1: 1 к методам производства не дает достаточного охвата почти во всех случаях.
В зависимости от вашей версии Visual Studio количество инструментов тестирования может варьироваться. NUnit - это очень популярная среда тестирования: http://www.nunit.org/,, если вы не используете инструменты Visual Studio.
Чтобы пройти тестирование, вы можете:
Создайте новый проект типа Тестовый проект с именем YourProjectUnderTestName.Tests.Unit.
Вы увидите, что у тестового класса есть атрибут [TestClass]
, а у тестовых методов есть атрибут [TestMethod]
.
Вам также придется взглянуть на Assert
классы и их статические методы http://msdn.microsoft.com/en-us/library/ms182530.aspx
Вы должны следовать шаблону Arrange, Act, Assert в своих тестах. Получите все, что вам нужно для запуска кода, который вы хотите протестировать изолированно, затем запустите тестируемый код, а затем используйте Asserts для проверки ожидаемого поведения.
В какой-то момент вам также понадобится узнать о методах [SetUp] / [TearDown] (в MSUnit), которые имеют атрибуты:
[ClassInitialize()]
, [TestInitialize()]
и
[TestCleanup()]
[ClassCleanup()]
ClassInitialize
запускается перед началом любого теста, TestInitialize
запускается перед каждым тестом в классе, TestCleanup
запускается после каждого теста в классе и ClassCleanup
запускается после завершения всех тестов.
Как говорит @bAN, загляните на сайт http://artofunittesting.com/ и всерьез подумайте о том, чтобы получить книгу. Это один из тех, которые я бы взял, если бы в офисе был пожар, вместе с Code Complete.
Как отметили @bAN и @Oliver Hanappi, TDD - очень хороший способ убедиться, что вы проводите "правильное" модульное тестирование и получаете хорошее покрытие.
Удачи!