- Arrange - выставление начальных условий.
- Act - отработка тестируемого функционала.
- Assert - сверка ожидаемых значений с полученными.
Приведу простой пример: // Переводчик. interface ITranslator { string Translate(string line); } class EngRusTranslator : ITranslator { public EngRusTranslator(/*Требуем словарь*/) { } public string Translate(string line) { // Здесь у нас есть доступ к словарю // (который надо передавать в // качестве аргумента в конструктор), // по которому происходит перевод. // // Но предположим, что он у нас зашит к коде. throw new NotImplementedException(); } } [Test] public void TestTranslate() { // Arrange. // // Здесь мы можем setup-ить наши Mock объекты, // например создать Mock-словарь, который потом // передать в качестве аргумента в конструктор. ITranslator translator = new EngRusTranslator(); // Act. // // Отработка тестируемого функционала. string result = translator.Translate("Hello, World!"); // Assert. // // Проверка. Assert или Verify метод. Assert.AreEqual("Привет, Мир!", result); }
Хоть мой пример и простой, но мы явно видим плюсы разработки при таком подходе:
- Assert-методы никогда не перемешаются с Act-методами.
- Неявное навязывание писать ОДИН Assert на ОДИН тест.
- Упрощенный рефакторинг, Вам легко будет обнаружить Arrange-блоки, которые можно вынести в SetUp-метод.
Чтобы не парить голову з кодами и прочей фигнёй я использую премиум темы wordpress, это система управления содержимым сайта с открытым исходным кодом, и разними полезными функциями
ОтветитьУдалить