Звено тестване в Visual Studio използване NUnit и nsubstitute
![Звено тестване в Visual Studio използване NUnit и nsubstitute (тестване) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/236x300_ghk7qcft0lrec8bpd2c9.webp)
Послепис Още в процеса на писане, за да видите, че той е оставен на българския превод на книгата.
![Единица тестване в Visual Studio използване NUnit и nsubstitute (единица) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/209x300_ku61rlvoeojp5sfhlqma.webp)
![Единица тестване в Visual Studio използване NUnit и nsubstitute (единица тест) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/300x300_1kibfohkb4cz28qchhmn.webp)
защото Тази книга е написана за по същество C # програмисти, именно защото бе последвано от избор на библиотеките NUnit, NSubstitute. същото се оставя непроменен именуване система.
![Звено тестване в Visual Studio използване NUnit и nsubstitute (книга) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/200x284_kr803qa7zoadq0vffk5v.webp)
Така че, може би това ще започне. Аз ще ви кажа как да се създаде Visual Studio да пишат тестове, както и 3 примера. Първият - в тази статия е просто и скалъпен да даде основата. Във втората част ще бъде сравнително прост пример, не забравяйте, как тестовете, обхванати за първи път. В третата част на статията е пример за по-сложно и ми ще да пишат паралелно код. За да стане ясно, че не богове горят саксии.
На първо място, трябва да инсталирате NUnit. но да се започне е разположен в VisualStudio - NuGet. Това разширение ви позволява да инсталирате пакети в една команда от конзолата.
Open Visual Studio. и изберете Инструменти | Разширенията и актуализации (преди това е бил Extension Manager)
![Звено тестване в Visual Studio използване NUnit и nsubstitute (книга) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/419x440_thj6lmzdxmtzvhhadg41.webp)
![Звено тестване в Visual Studio използване NUnit и nsubstitute (статия) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x300_48pb6ldnk51nv54jowkl.webp)
Можете също да инсталирате NUnit Тест адаптер - интеграционни тестове работят в студиото (макар че аз използвам Resharper така че аз не особено искат.)
Макар че аз не препоръчваме да инсталирате Unit Test Generator. Четох за проблема в прегледа, но не обръщат внимание. След инсталацията - престава да работи преход в клас / метод за изпълнение на Ctrl + Click. Проблемът изчезна веднага след отстраняването на тапа.
Така че сега ние имаме NuGet. но ние се нуждаем NUnit (аз ще използвам тази рамка, вместо вградения Visual Studio), заедно с NSubstitute.
Ние създаваме тестов проект конзола и го наречете SampleProject. Поставих марката срещу Създаване указателя за решение. до папката с тестовете за проекта не са били инвестирани в самия проект, а е на същото ниво.
![Звено тестване в Visual Studio използване NUnit и nsubstitute (NUnit) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x302_msqtx5v5pu8hf4xeurji.webp)
Сега се създаде проект, който съдържа единица тестове за нашия проект
![Звено тестване в Visual Studio използване NUnit и nsubstitute (NUnit) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x327_fje3o2veftoeeklw6j8q.webp)
Предписва име на проекта
![Единица тестване в Visual Studio използване NUnit и nsubstitute (единица тест) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x300_25r03x6h3y7nv9rgvlgv.webp)
Забележете, че на мястото, аз отидох до по-високо ниво, който първоначално е бил препоръчаха ми да създадете елемент с проект тестове вътре в папка с проекта.
Както написах по-горе, име конвенция ще бъде взето от книгата Изкуството на Звено тестване. За да назовем само тестове на проекта е следната - <Тестируемый проект>.UnitTests. По този начин ние сме един проект с тестовете ще бъдат призовани SampleProject.UnitTests
След създаването SampleProject.UnitTests проект - отваряне на файл, създаден UntTest1.cs
![Звено тестване в Visual Studio използване NUnit и nsubstitute (изтегляне проба) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x261_6q12mycwzkv3naerq8af.webp)
Както виждаме сега използва вграден рамка VisualStudio тестване. Това може да бъде разбрано по атрибути - клас [Тест]. в метод [TestMetod]. Ние искаме да използваме NUnit които вместо тези други атрибути [TestFixture] и [Test] съответно. Нека се опитаме да се промени, но те са подчертани в червено, защото докато VisualStudio за тях не се знае нищо.
![Звено тестване в Visual Studio използване NUnit и nsubstitute (статия) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x255_pu58jivyc2xidc8n6zkb.webp)
Отворете конзолата NuGet
![Единица тестване в Visual Studio използване NUnit и nsubstitute (единица) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x270_6y8fumf4cv6r0dsgas76.webp)
И получи команда
Инсталирайте Пакет NUnit
и след това
Инсталирайте Пакет NSubstitute
ВАЖНО: Не забравяйте да изберете проекта по подразбиране като вашия проект с единица тестове, а не с програмата. В противен случай, библиотеката ще бъде настроен на грешната проекта.
![Единица тестване в Visual Studio използване NUnit и nsubstitute (единица) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x211_60fkltrgwziz8cvgmow1.webp)
Добави в UnitTest1 -
използване NUnit.Framework;
и ние виждаме, че компилаторът сега смятат, че нашите качества, като се използват стари могат да бъдат отстранени (използвайки Microsoft.VisualStudio.TestTools.UnitTesting)
Надявам се да прочетете книгата Изкуството на Звено тестване, или просто нямате представа как се работи в общи линии с NUnit. защото дълбоко основание не планирам да се обясни малко по-формат статия.
Ако сме наистина кратък - най-важното в единица тест - това е декларация за истинността на предположението (отстояват).
Ще създаде в главната папка на проекта SampleProject Utilites и да се създаде там IAccount интерфейс (папка е създадена за визуално разделяне на класове и не е задължително)
Първоначално се обадих метод GetAccountId_InititalizedObject_ReturnCorrectId. след това преименувана
GetAccountId_WasInitializedWithId_ReturnSameId
Започваме да създаде код за профила
Сметка сметка = нов профил ();
и да видим грешката, нашите тестове единични проекта е все още знаят за проекта за изпитване
добре, че е необходимо да се добави препратка към оригиналния SampleProject. повикване разговор
![Звено тестване в Visual Studio използване NUnit и nsubstitute (книга) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x200_isehskfvjauesmyuw8cy.webp)
И ние избираме нашия проект
![Звено тестване в Visual Studio използване NUnit и nsubstitute (статия) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x115_lu47bx3r17mjcit4b8za.webp)
След това добавете AccountTests на класа, използващи SampleProject.Utilites; и започва да компилирате кода
добавя кода, трябва да получите нещо подобно
В момента тече теста (пускам с помощта на runner'a Resharper., Но има безплатно решение, същата NUnit Тест адаптер., Който работи по този начин :)
![Единица тестване в Visual Studio използване NUnit и nsubstitute (единица тест) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x141_ri72cr1vtq6pgsvdmqfp.webp)
и ние виждаме, че тя преминава
![Звено тестване в Visual Studio използване NUnit и nsubstitute (студио) Звено тестване в Visual Studio използване NUnit и nsubstitute](https://webp.images-on-off.com/26/77/434x255_v8f7k557y04kr5l68hy3.webp)
Какъв е теста? Ние създаваме обект Сметка. инициализиране на номера му. и след това Assert.AreEqual команда (account.GetAccountId (), initId); Ние се провери дали GetAccountId () метод се връща на същата стойност, която е най-инициализация.
Ако искате да видите как тестът е неуспешен, промяна на линия, за да се провери за
Assert.AreEqual (account.GetAccountId (), 0);
един
Assert.AreNotEqual (account.GetAccountId (), initId);
По принцип на работа, въпреки че е твърде проста и пресилено. Аз питам малко търпение.
Нека да се справят с това, какво по NSubstitute
Най-трудната част е може би в единица тестване "д - е да се работи с обекти, които не са тествани. Представете си, че в метод GetAccountId (), за да всъщност изпълнява стотици реда код, плати на мрежата за достъп до базата данни, и подобни неща. Не е най-весело перспективата за всичко, разнасящ в UnitTest'ah. да бъде лек и бърз, така че, в идеалния случай, най-малко на всеки компилация от техния план и да се уверите, че кодът не е счупена, както е изменен. Позоваването на мрежова файлова система -
а) изискват конфигурация
б) могат да заемат значителна време
в) по същество са интеграционни тестове, които също са важни, но сега не е за тях.
Какво е решението - разбира се лъжа и да се замени всичко, което се намира извън нашия контрол) Създаване на фалшив. Тъп. Мъниче обекти. Обектите, които реализират интерфейса, но в действителност това, което е казал.