Projektides võib ikka juhtuda, et te kasutate oma lahenduse ühik testimisel (unit test) mõnda teist raamistikku, kui MSTest. Mina näiteks kasutan vahest nUnitit või xUnitit. Mulle meeldib xUniti erinev testi kirjutamise stiil ja mulle meeldib nende mõlema puhul see, et raamistiku kasutamiseks saab kasutada tavalist klassikogumi projekti. Ka on nende testide jooksutamine kohati kiirem.
Nüüd vahest võib ka juhtuda nii, et teie mitte MSTesti raamistikul testid on vaja üle viia MSTesti raamistiku peale ning kasutada Test Projekti. Mul tekkis konkreetne vajadus sellest, et MSTesti projekti on lihtsam kasutada üle terve meeskonna, juhul kui kõik kasutavad ainult Visual Studiot. Ei ole vaja eraldi vahendit jooksutamiseks. Ka on integratsioon Team Buildiga vaikimisi toimiv, teiste raamistike puhul on vaja Team Buildi muuta vastavalt ja eraldi vaeva näha (mitte väga suur keerukus, aga siiski aeg). MSTestil on veel eeliseid ja erinevusi, aga see postitus ei ole õige koht selle jaoks.
Igatahes, on vajadus muuta nUniti projekt (class library) ümber MSTest-i raamistikul jooksvaks projektiks (Test Project).
Võrdlemisi lihtne konverteerimine:
- Asenda ühed attribuudid teistega (abik xUniti võrdlus erinevate unit testimis raamistikega)
- Eemalda projektist nUniti viide assembly’le
- Lisa projektile viide MSTest unit testimis assembly’le (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
- Muuda koodi, kus MSTestis ei ole vastavat Assert väljendit nUnitile (nagu Assert.Throws = [ExpectedException] etc.)
- Asendada using nUnit… väljendid using Microsoft.VisualStudio…. väljenditega
- (arvan et pole kohustuslik) lisada .vsmdi ja .testsettings failid solutionisse.
Põhimõtteliselt muud nagu ei olegi, kõik väga loogiline. Seejärel kompileerite ja proovite Test View abil näha oma suurepäraseid ühik teste, mis nüüd võiks toimida kõik MSTest abil. Ja mida te näete? MITTE MIDAGI!
On veel üks tore samm, mis on vaja teha, et Visual Studio saaks aru, et tegu on testi projektiga ning vahend oskaks otsida teste ja neid kasutada.
Teil on vaja lisada oma klassikogumi projekti faili uued projekti tüübi identifikaatorid (ProjectTypeGuid –d).
Kõige lihtsam viis neid leida on luua tühi TestProjekt ja editeerida projekti faili ning XML-st üles leida element nimega “ProjectTypeGuids”.
Nendeks on järgmised GUID-d:
1: <ProjectTypeGuids>
2: {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
3: </ProjectTypeGuids>
Pärast nende lisamist projekti faili on elu ilus ning testid peaksid jooksma!
NB! Lisaks siia veel ühe tähelepaneku Test Projekti puhul - see peab kasutama seda versiooni .NET-st, millega koos Visual Studio välja tuli ja mis on vaikimisi raamistik (VS2008 puhul .NET 3.5, VS2010 puhul .NET 4.0). Iseenesest ei ole see takistus või probleem, kuna testi projekti ju keegi kuskile ei paigalda ja arendajatel on tavaliselt ikkagi samad versioonid Visual Studiost (või siis on paksu pahandust mitme erinevat versiooni VS solution ja project failidega).
Edu konverteerimisega, kui peaks vajadus olema!