Тестування у Visual Studio

тестування

Всім доброго доби. На зв'язку Олексій Гулинін. Минулої статті ви дізналися трохи про те, що таке інтерфейси C#. У цій статті я хотів би розповісти про те, як тестувати написаний код у Visual Studio. Перед тим, як віддати програму кінцевим користувачам, вона має бути ретельно проаналізована та протестована. На це йде багато часу. Розробка проекту зазвичай йде досить швидко, що ускладнює можливість ручного тестування програм.

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

Навіщо це все потрібно? Уявимо ситуацію: ви написали складну програму, яка містить багато класів. Ви все перевірили про тестування. Виникла потреба внести зміни до якогось класу. Після таких змін може виникнути ситуація, що програма раптом перестає працювати коректно на якомусь кроці (додавання нового функціоналу перестає працювати старий). У разі, якщо у вас є тестові методи, можна їх запустити і перевірити працездатність. Таким чином, тестування запобігає появі даних проблем і дозволяє швидко перевірити працездатність.

До складу Visual Studio входить модульне тестування.

Таке тестування окремих частин програми називається unit-тестуванням (модульне тестування).

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

Як створити модулі-тестування?

Це звичайні C#-класи, які компілюються в dll-файл, але ці C#-класи повинні бути розміченіза допомогою спеціальних атрибутів.

Додамо новий проект до нашого "Solution". Скористайтеся майстром, який входить до складу "Visual Studio". Шаблон проекту: "Unit Test Project" (Проект модульного тесту). Ім'я проекту вкажемо "MyTest":

visual

Відмінність від класу полягає в тому, що тут присутні атрибути "TestClass" і "TestMethod":

Атрибут - це якийсь ярлик, який можна навісити на клас, метод, на полі, на властивість. Атрибут є класом. Якщо існує атрибут TestClass, то існує клас TestClassAttribute.

Ці 2 атрибути навішені для того, щоб компонент NUnit (компонент Visual Studio), коли ми захочемо запустити тести, зрозумів, де ці тести знаходяться. У цьому тестовому проекті необхідно додати посилання ("Add reference") на основний проект, а також додати посилання на основний проект, використовуючи using.

Що є пройденим та непройденим тестуванням?

Якщо метод нормально закінчив роботу, то тест вважається пройденим. Якщо було викинуто будь-який виняток, то тест вважається непройденим. Винятки можна викидати самим. Також можна використовувати методи класу "Assert". Наприклад, цей клас має метод "AreEqual()". Він порівнює те, що очікуємо одержати з тим, що вийшло за фактом.

Тести запускаються через "Run - All Tests" (Ctrl + R).

тестування

Також є атрибут "TestInitialize" та "TestCleanup", який навішується на метод. Методи, позначені даними атрибутами, будуть викликатися один раз. "TestInitialize" викликається перед тестуванням, "TestCleanup" - після тестування.

Зазвичай, ці атрибути використовуються при складному тестуванні. Навіщо вони можуть бути потрібні? Допустимо перед початком тестування вам потрібно помістити якісь тестові данів базу даних, або файл. Після закінчення тестування вміст, який ми додали для цієї бази або файлу, потрібно видалити.

Давайте напишемо простий приклад.

Напишемо клас "Room"

Клас для тестування:

Якщо ми тепер запустимо тестування, то вийде помилка тестування (на скріншоті):

studio

У цій статті ви трохи дізналися промодульне тестування у Visual Studio, а також як його запускати.

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