Av Lars Rosén
3. July 2009, 15:37
Visa profil för Lars Rosén
Tänkte att så här inför semestertider tipsa om enhetstestning av Silverlight-sidor.
http://code.msdn.microsoft.com/silverlightut/
Här kommer en liten introduktion till hur man kan enhetstesta en Silverlight applikation:
- Ladda ner binärerna för Silverlight Unit Testing Framework här: http://code.msdn.microsoft.com/silverlightut/Release/ProjectReleases.aspx?ReleaseId=2913
- Spara DLL:erna på ett bra ställe där de är lätta att hitta från referensdialogen.
- Lägg till ett nytt Silverlight projekt, kalla det t.ex. "Test"
- Lägg till följande två referenser till projektet "Test":
Microsoft.Silverlight.Testing.dll
Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
- Ta bort filen Page.xaml
- Ändra på vad som tilldelas RootVisual i App.xaml.cs till UnitTestSystem.CreateTestPage:
this.RootVisual = UnitTestSystem.CreateTestPage();
- Skapa en klass som kallas "ClientTest", för att det testar själva klienten
- Lägg till följande using statements:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Silverlight.Testing;
till klassen "ClientTest".
- Lägg till ett till using statement:
using UnitTestingSample;
(om ditt testprojekt heter något annat så byt namn)
- Märk klassen ClientTest med [TestClass]
- Se till att klassen "ClientTest" ärver från klassen "SilverlightTest" enligt:
"public class ClientTest: SilverlightTest"
- Skapa en privat variabel för Silverlight-applikationens klass som brukar heta Page:
private Page TestPage;
- Lägg till en metod som initierar silverlight-sidan och visar upp den på Testpanelen så att den går att testa:
[TestInitialize]
public void PrepareTest()
{
TestPage = new Page();
TestPanel.Children.Add(TestPage);
}
- Lägg sedan till en test:
[TestMethod]
public void TestExample()
{
Assert.IsTrue(true);
}
- Markera projektet "Test" som "StartUp Project"
- Kör och din browser kommer att visa vilka tester som körts och hur det gick.
- Lägg till riktiga tester som testar all logik som din Silverlight-applikation innehåller så att du får allt testat
TIPS: För att du ska kunna komma åt interna variabler och metoder i de projekt som du vill testa så skriv in följande i AssemblyInfo.cs under Properties i det projekt som ska testas:
[assembly: InternalsVisibleTo("Test")]
Det gör att från projektet Test kommer man åt alla interna variabler och metoder.
Jag har lagt till en ZIP-fil med en solution som innehåller en Silverlight-sida som enhets-testas enlight ovan.
/Lars
UnitTestingSample.zip (734,50 kb)