Utöver det så finns även ett namespace som heter NUnit.Framework.SyntaxHelpers. SyntaxHelpers innehåller en klass som heter Is (eller Iz för VB.Net) och alla metoder i Is returnerar ett object av typen Constraint.
Detta gör att man kan skriva asserts av typen:
Assert.That(strMyName, Is.EqualTo("Björn Eriksen").IgnoreCase);
ellerAssert.That(11111.3, Is.EqualTo(11111.31).Within(0.1));
ellerAssert.That(50, Is.Not.EqualTo(100));
Det här sättet att skriva asserts tycker jag är väldigt trevligt och man saknar det snabbt om man måste gå tillbaka och skriva på det "gamla" sättet.
I Visual Studio 2008 finns inte något inbyggt stöd för att använda constraints-baserade asserts men det är ju onekligen en trevlig IDE att använda för unit testing så vad gör man...?
Det man kan göra är att använda NUnit constraints based asserts i Visual Studios unit testing-ramverk!
För att få till det hela på ett smidigt sätt så måste man plocka bort using-referensen till Microsoft.VisualStudio.TestTools.UnitTesting; och ersätta den med:
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;
Anledning till detta är att klassen Assert finns med i både NUnit.Framework och i Microsoft.VisualStudio.TestTools.UnitTesting, så kompilatorn vet inte vilken den ska välja. För enkelhetens skulle bör man därför plocka bort using-referensen till Microsoft.VisualStudio.TestTools.UnitTesting istället för den till NUnit. Då blir det enklare när man ska skriva Asserts i sina test-metoder.
Effekten blir då den att, för attribut och typer som man ska referera från Microsofts test-ramverk så måste man ha kompletta sökvägar t ex:
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod()]
I och med Visual Studio 2008 så kommer unit testing att vara med i Professional-versionen och förhoppningsvis leder det till att det blir enklare att införa unit testing i projekten!
Inga kommentarer:
Skicka en kommentar