Яка найкраща рамка тестування для .NET і чому? [зачинено]


26

Мені здається, що всі використовують NUnit, навіть не розглядаючи інші варіанти. Я думаю, це тому, що:

  • Усі вже знайомі з цим, тому їм не доведеться вивчати новий API.
  • Він уже налаштований з їх сервером безперервної інтеграції для роботи з NUnit.

Я помиляюся з цього приводу?

Нещодавно я вирішив використовувати xUnit в одному зі своїх власних проектів, і мені це подобається! Це має для мене набагато більше сенсу, і концептуально це здається певним кроком вперед від NUnit.

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


6
Будь ласка, визначте найкраще. Найдешевше? найпростіше кодувати? найменше рядків коду за тест? stackoverflow.com/questions/680298/…
Амір Резай

Вибачте, я мав на увазі найпотужніший, стабільний та інтуїтивно зрозумілий, що б там не було. Я прошу думки та причини, чому . Я залишив «найкраще» уяву відповідача, тому що я також хотів би побачити, який із цих аспектів важливий для людей.
Ніхто

2
Якщо ви можете переформулювати своє запитання, то це може бути нормально, інакше це лише "список X", які не є конструктивними. Дивіться шість вказівок щодо конструктивних суб'єктивних питань
ChrisF

2
"найкраще" - це дурне запитання - тому що дуже рідко існує одне найкраще частково, тому що це залежатиме від контексту, а частково тому, що воно певною мірою є неминучим суб'єктивним.
Мерф

10
Мерф. По-перше, цей сайт призначений для суб'єктивних питань. По-друге, я прошу думки, тому я хотів би бачити в інших «тлумачення найкращого». І не називайте мене німим.
Ніхто

Відповіді:


15

MSTest

Я особисто використовую MSTest. NUnit - це справді приємно, але у VS2010 MSTest вже повністю інтегрований у IDE і для нього є повні шаблони проектів. Для .NET, якщо ви використовуєте 2010 рік, я вважаю, що MSTest - це спосіб перейти (MSTest у VS2008, я не думаю, що це дорівнювати) просто для покриття коду, тестового запуску та інших доступних для вас інструментів з коробки. (Якщо ви використовуєте CodeRush або R #, вони мають справді чудові тестові бігуни / інструменти для інших тестових рамок)

Редагувати: з тих пір я перейшов до XUnit. : D


Я проголосував за МбУніт / Галіо і за цю відповідь. MbUnit / Galio просто кращий, але їх руки пов'язані, коли справа доходить до запуску тестів MsTest, для деяких критичних класів у цій. Однак, якщо вам доведеться задіяти автоматичну інтерфейс GUI, тоді кодований інтерфейс і cuite.codeplex.com/documentation працюють над MsTest, тому потрібно просто використовувати їх.
Робота

2
Проблема, що у мене з MSTest, полягає в тому, що він не підтримує тестування командного рядка, це може бути проблемою, коли ви хочете запускати одиниці через CI.
CmdrTallen

1
Тепер Nunit повністю інтегрується у VS?
BKSpurgeon

Так, так і є. Враховуючи це вже близько 6 років, я особисто переїхав до NUnit, а потім вже до XUnit. У обох (та інших) є пакунки, що служать адаптерами для освітлення тієї ж функціональності VS, що і MSTest. Чесно кажучи, MSTest, ймовірно, знаходиться внизу списку в цей момент. Я б проголосував за XUnit або NUnit. в наші дні, як обидва тверді, підтримувані та сучасні.
Райан Хейс

14

Я почав використовувати Gallio / MbUnit кілька років тому. А функції та дорогоцінні камені, які вона надає, настільки потужні, що я ніколи не пошкодував про свій вибір. Насправді я зараз є частиною команди розробників проекту Gallio OSS; тож я можу зробити свій внесок у ще більш приголомшливим.

  • У MbUnit є багато потужних функцій, які просто полегшують моє життя розробникам (перевіряючі контракти, тестові фабрики, порівняння структурної рівності, комбінаторні тести, рамки генерації даних, текстові розбіжності, твердження XML, точки розширення тощо)
  • Gallio забезпечує стійку платформу для запуску всіх моїх тестів із чудовим інструментом для звітування. Мені також подобається той факт, що я можу інтегрувати тести з інших проектів OSS, які не використовують MbUnit, а просто запускати їх. Безпроблемна інтеграція в багато інших сторонніх інструментів також зручна (R #, PoSh, dotCover тощо). І розширюваність інфраструктури дивовижна (наприклад, я щойно закінчив писати тестовий адаптер для рідної некерованої структури тестування C ++ . Незабаром це буде частиною майбутнього випуску)

Вікі , безумовно , є гарною відправною точкою для знайомства з Gallio і MBUnit v3. На підвіконні пропущені деякі глави, але це вже тихо корисно.


Порівняння структурної рівності та рамки генерації даних звучать чудово. Чи може MbUnit робити тестування на основі даних - тобто читати файли csv / xsd і використовувати їх як аргументи методу тестування? Це одна з головних визначних пам'яток xunit для мене.
Ніхто

Звичайно. ASAIK MbUnit був першою тестовою основою для .NET, яка запровадила тестування на основі даних. Він може пов'язувати параметри тесту до внутрішніх ([Рядок], [Стовпець] тощо) та зовнішніх ([CsvData], [XmlData] тощо) тощо. Більше деталей тут: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin

Чи вирішили вони проблеми з виступом, які виникали у Gallio та візуальної студії? Була угода вбивцею для нас.
Wyatt Barnett

Я використовував MbUnit, коли працював у невеликій компанії, і це було чудово! Пізніше я використовував MsTest, тому що мені довелося, і це вийшло нормально. Я все ще віддаю перевагу написанню явного коду над налаштуванням параметрів проекту. Корпоративна підтримка, однак, допомагає MSTest. Незалежно від того, чи дизайн потворний чи красивий, ви знаєте, що все, що виходить із MSFT, буде добре перевірене.
Робота

@YannTrevin Який статус Gallio / MbUnit? Я переглянув сховище Google Code, але, здається, не було останніх змін. Чи відбувається розвиток десь в іншому місці або проект затримується?
Wesley Wiser

9

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

Особисто я вибрав би NUnit з кількох причин. Перше і головне - це підтримка інструментів. Існує безкоштовна надбудова для Visual Studio 2010 , і всі основні додатки сторонніх розробників підтримують її. Кожна окрема система побудови, утиліта тестового покриття та сервер CI підтримує її. У багатьох випадках без плагіна. На рівні коду він може обробляти майже будь-який сценарій на даний момент - тести, керовані даними, успадкування, абстрактні тестові класи, загальні тестові класи, налаштування, руйнування тощо. До певної міри у нас є xUnit, оскільки NUnit отримав надто багаті функції і потужний.

Поза межами NUnit, я думаю, ви могли б зробити досить пристойний аргумент для MBUnit + Gallio, як згадував Yann - це дуже солідна рамка. Той, якого вам слід уникати, якщо це можливо, буде MSTest, який має кілька фатальних недоліків IMHO. Недоліки є деякими обмеженнями у ваших тестових класах, як-от відсутність успадкування та залежність від професійних або кращих візуальних SKU-програм. У тому числі вимагає встановити візуальну студію на сервері збірки для запуску тестів.


0

Одна з причин - NUNIT стає більш галузевим стандартом, ніж xUnit. Але особисто я люблю xunit.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.