Unit Test Frameworks for C#

Так буває іноді що приходиш сусіду допомогти шафу зібрати в якості експерта, й після другої вже зібраної секції він тебе питає:

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

Аналогічна ситуація сталась й на моєму проекті (й на вашому може статись 🙂 ) команда звикла користуватись NUnit, а замовник завжди користувався MSTest. Й коли ми отримали закономірне питання: “А що, NUnit краще?”, то зрозуміли, що всерйоз над цим якось і не замислювались.

Але все ж таки, якщо обирати собі unit test framework для автоматизації UI тестів на C# – який краще?

По перше, треба дізнатись які є найпопулярнішими. Для C# таких три:
1️⃣ MSTest v2 – вибір за замовчуванням, оскільки постачається із Visual Studio відразу з коробки
2️⃣ NUnit 3.x- інструмент з багатою історією, який на початку свого існування був портований з аналогічного інструменту для Java – jUnit, й потім розвивався додаванням вже більш специфічних для семантики C# фіч
3️⃣ xUnit.net 2.x – в якомусь сенсі, відгалуження від nUnit, розробники якого вирішили зробити “на цей раз все правильно”

По друге, треба порівняти їх фічі та сумісність з іншими важливими для вас інструментами. І от з цим вже проблемка.. Наприклад раніше холіварити обирати один з цих інструментів було набагато легше, оскільки MSTest v1 не мав змоги запускати тести паралельно, то питання стояло лише куди з нього перейти – на NUnit чи xUnit.net, паралельно за звичкою докоряти Майкрософту за недолугий MSTest 🙂
Але зараз із цим вже все гаразд, всі три фреймворка достатньо насичені можливостями як функціональними так й інтеграційними щоб задовольнити 99% ваших потреб. Звісно є певні розбіжності в синтаксисі, навіть в продуктивності, але якщо у вас стоїть питання “з чого почати” – то сміливо можна починати з будь яким з трьох наведених. Всі три мають активну спільноту й багато документації. Навіть в Visual Studio шаблони тестових проектів є не тільки для рідного MSTest v2, а й для NUnit та xUnit.net.
Щоб дійти у висновках до такого аж ступеню конформізму довелось перечитати деяку кількість порівняльних статей. Поділюсь із вами посиланнями на найкорисніші з них:

Найкраща поки що порівняльна стаття (з тих що знайшов)
Порівняння від розробників xUnit net (навіть, здається неупереджене)
Порівняння продуктивності зазначених інструментів від MS
Минулорічний подкаст від QAGuild на пов’язану тематику

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

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

9 November 2020
Автор: 
Mikhail Chub

Leave a comment

Leave a Reply