Artykuły

A A A
Drukuj Ekportuj do PDF
Opublikowane: 2011.11.18 8:30 | Artur Sienicki | Aktualizacja: 2011.11.18 8:31

NUnit i ASP.NET MVC 3 - Wprowadzenie

Artykuł jest prostym samouczkiem dla wszystkich programistów którzy programują, ale z testami jeszcze nie mieli nic wspólnego. Pokazuje jak napisać pierwszy test oraz jak skonfigurować środowisko do wydajnej pracy z testami.

NUnit i ASP.NET MVC 3 – Wprowadzenie

NUnit to narzędzie do przeprowadzania testów jednostkowych w projektach platformy Microsoft .NET.

Do naszej solucji tuż obok naszego projektu MVC 3 dodajemy nowy projekt Class Library (Visual C# -> Windows -> Class Library). Dla potrzeb artykułu będę operował nazwą projektu MVC 3 „TechBlog”. Projekt Class Library nazywamy „TechBlog.Tests”.

Następna rzeczą jaką trzeba wykonać jest dodanie referencji do projektu „TechBlog.Tests”:

Klikamy prawym na projekcie TechBlog.Tests” i wybieramy „Add Library Package Reference”.

Następnie w menu klikamy na Online i naszym oczom powinna się ukazać kolekcja paczek od Microsoft’u. Ułatwiamy sobie szukanie i w pole po prawej stronie wpisujemy Nunit. Po znalezieniu pakietu klikamy na install i zamykamy okno.

Add Library Package Reference

  1. Dodajemy referencje do projektu TechBlog bo na nim będą oparte testy.
  2. Dodajemy referencję do biblioteki System.Web.Mvc.dll możemy ją znaleźć:

    C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll

Zmieniamy nazwę klasy Class1.cs na FileControllerTests.cs bo mam kontroler w projekcie TechBlog który nazywa się FileController, VS automatycznie będzie chciał zmienić zawartość klasy na co się zgadzamy.

W sekcji usingów dodajemy NUnit.Framework, TechBlog.Controllers.

Do klasy FileControllerTests dodajemy atrybut [TestFixture].

Dodajemy nową metodę do klasy o nazwie „Put_Message_In_ViewBag_Upload”, dodajemy do niej atrybut [Test]. Dodajemy metodę z poniższego screena.

TestFixture and Test Attribute

Żeby móc się odwołać  do ViewBag’a musimy zmienić typ zwracanego widoku w projekcie TechBlog metody Upload z ActionResult na ViewResult.

Oczywiście w ViewBag’u mam teraz zainicjowaną warość dla pola ID_Publication.

Jeżeli nic nie sknociliśmy powinno nam się udać zbudować projekt bez żadnych problemów.

ViewBag.ID_Publication w kontrolerze FileController Upload action

Jeśli wykonałeś wszystko tak jak powyżej jesteś gotowy do pierwszych testów.

Otwieramy folder w którym znajdują się nasze projekty ( u mnie C:\PROJECTS\TechBlog). Wchodzimy do folderu packages\NUnit.2.5.10.11092\tools.

Znajdują się tam 2 programy które powinny nas interesować „nunit.exe” oraz „nunit-console.exe”.

Pierwszy to odpalenie testów jednostkowych w formie graficznej drugi w konsolowej.

Po uruchomieniu pierwszego programu wybieramy Open project i zaznaczamy TechBlog.Tests.dll.

Uruchamiamy i czekamy na efekt końcowy. Test przeszedł pomyślnie.

NUnit - tryb graficzny, pomyślnie wykonany test

Dobra, to teraz chcemy żeby test się nie powiódł. Zamykamy Nunit.exe (trzeba zwolnić dll).

Usuwamy w projekcie Techblog w metodzie Upload  (kontroler FileController) inicjację pola viewbag ID_Publication. Kompilujemy po czym jeszcze raz odpalamy NUnit.exe.

NUnit - tryb graficzny, wykonanie testu zwraca błąd

Tym razem test się nie powiódł ponieważ oczekiwaliśmy wystąpienia pola z ViewBag’a ID_Section.

Drugi sposób na testowanie to odpalenie nunit-console. Możemy go odpalić w konsoli cmd w sposób przedstawiony poniżej:

..\2.5.10.11092\tools>nunit-console.exe ..\..\..\TechBlog.Tests\bin\Debug\TechBlog\Tests.dll

Można też ustawić w visual studio żeby robiło się to nam automatycznie, bo odpalanie za każdym razem nunit.exe albo nunit-console.exe jest uciążliwe.

Więc, klikamy prawym na projekt TechBlog.Tests wybieramy Properties. W oknie które nam się pojawi na ekranie zaznaczamy Build Events.

Error list

W sekcji „Post-build event command line” wybieramy Edit Post-build. W nowym oknie klikamy macros I możemy wybrać SolutionDir oraz TargetPath.

Do edytora wpisujemy  poniższą ściężkę:

$(SolutionDir)packages\NUnit.2.5.10.11092\tools\nunit-console $(TargetPath)

Zatwierdzamy, zapisujemy i budujemy.

Project properties -> build events

O nie! :) Sprawdzamy co się stało, klikamy na output, mamy tam cały stacktrace tego co spowodowało błąd.

okno output z wynikiem niepoprawnego przejścia testu

Test nie przeszedł próby. Oczekujemy „czegoś” a dostajemy null’a, a tego nie chcieliśmy.

Po dodaniu w TechBlog w akcji Upload ViewBag’a z polem ID_Publication nie ma błędów – testy przechodzą pomyślnie.

Uwaga: Jeśli ścieżka w której znajduje się projekt zawiera białe znaki to przy próbie zbudowania aplikacji zwrócony zostanie błąd 9009. W tej chwili omijam to tak, że trzymam projekty na dysku C w folderze projekty i wszystko działa jak należy.

Zachęcam do testowania i zapoznania się z tematyką TDD – najpierw piszemy testy, a dopiero potem kod.


Źródło: Opracowanie własne

Podobne artykuły

Komentarze 0 Masz uwagi do tej strony? Napisz

Dodaj komentarz

avatar

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Autor Artur Sienicki
avatar
 

.NET Developer

Załóż konto
CodeGuru to miejsce dla każdego programisty. Przez lata portal rozwijany był siłami społeczności i to właśnie społeczność programistów jest tutaj najważniejsza. CG od wielu lat gromadzi wokół siebie coraz większą grupę pasjonatów. Warto być jej częścią!

Dowiedz się więcej o CodeGuru

Geek Club - Windows Phone

 

MetroOne

Idź na górę strony