Використання заглушок для ізоляції частин додатків один від одного при модульному тестуванні

Типи заглушок - це одна з двох технологій, які платформа Microsoft Fakes надає для більш простого ізолювання тестованого компонента від інших викликаються компонентів. Заглушка - це невелика частина коду, яка замінює собою інший компонент під час тестування. Перевага використання заглушки полягає в тому, що вона повертає послідовні результати, спрощуючи написання тесту. Тести можна виконувати, навіть якщо інші компоненти поки не працюють.

Огляд і рекомендації по швидкому запуску з Fakes см. В розділі Ізоляція тестованого коду за допомогою Microsoft Fakes.

На схемі представлений компонент StockAnalyzer, який потрібно протестувати. Зазвичай він використовує інший компонент - RealStockFeed. Але RealStockFeed повертає різні результати при кожному виклику його методів, що ускладнює тестування StockAnalyzer. Під час тестування ми замінюємо цей компонент на інший клас - StubStockFeed.

Використання заглушок для ізоляції частин додатків один від одного при модульному тестуванні

Оскільки передбачається, що заглушки можуть структурувати код таким чином, вони зазвичай використовуються для ізолювання однієї частини програми від іншого. Для ізолювання її від інших збірок, якими ви не можете управляти, наприклад System.dll, зазвичай використовуються оболонки. Див. Розділ Використання оболонок сумісності для ізоляції додатки від інших збірок при модульному тестуванні.

  • Visual Studio Enterprise

Існують більш гнучкі способи виконання цього підключення. Наприклад, StockAnalyzer може прийняти об'єкт фабрики, який може створити екземпляри різних реалізацій IStockFeed в різних умовах.

створення заглушок

Ви відокремили клас, який необхідно протестувати, від інших використовуваних їм компонентів. Таке відділення дозволяє не тільки зробити додаток більш надійним і гнучким, а й підключити тестований компонент до реалізацій заглушки інтерфейсів для тестування.

Достатньо написати заглушки як класи звичайним способом. Однак Microsoft Fakes пропонує більш динамічний спосіб створення найбільш придатною заглушки для кожного тесту.

Щоб використовувати заглушки, необхідно спочатку створити типи заглушок з визначень інтерфейсу.

Додавання збірки імітації

У браузері рішень розгорніть список Посилання проекту модульного тесту.

Виберіть збірку, що містить визначення інтерфейсу, для яких необхідно створити заглушки.

У контекстному меню виберіть команду Додати збірку імітацій.

Створення тесту з заглушками

Заглушки також створюються для методів отримання і завдання властивостей, для подій і для універсальних методів.

Перевірка значень параметрів

Можна перевірити, що компонент передає правильні значення, коли викликає інший компонент. Можна помістити твердження в заглушку або зберегти значення і перевірити його в основній частині тесту. наприклад:

Як описано в прикладі, методи можуть бути замінені заглушками шляхом додавання делегата в екземпляр класу заглушки. Ім'я типу заглушки є похідним від імен методу і параметрів. Наприклад, дані наступні інтерфейс IMyInterface і метод MyMethod.

Ми приєднуємо заглушку до методу MyMethod. який завжди повертає значення 1.

Якщо не надати заглушку для функції, Fakes створить функцію, що повертає значення за замовчуванням повертається типу. Для чисел значенням за замовчуванням є 0, а для типів класів - null (C #) або Nothing (Visual Basic).

Методи отримання і завдання властивостей представляються як окремі делегати і можуть бути замінені заглушками окремо. Наприклад, розглянемо властивість Value інтерфейсу IMyInterface.

Якщо не надати методи-заглушки для методу отримання або завдання властивості, Fakes створить заглушку, що зберігає значення, щоб властивість заглушки виступало в ролі простої змінної.

Події представляються як поля делегата. В результаті будь-які події, замінені заглушками, можуть викликатися шляхом виклику резервного поля події. Розглянемо наступний інтерфейс, який потрібно замінити заглушкою.