2008-11-21 10 views

Antwort

4

Nath, Das Toolkit Silverlight Control verwendet es. Schauen Sie sich die Unit-Tests dort an.

http://www.codeplex.com/silverlight

+0

Hallo Seite, Das war mein erster Gedanke, aber das schien eher eine benutzerdefinierte Steuerung zu sein, wo ich eher nach einem einzigen Anwendungslevel-Beispiel suche. Prost, Nath – NikolaiDante

8

Ich habe ein paar Blog-Posts über die Silverlight-Unit Testing Framework geschrieben. Die erste behandelt das Testen von asynchronem Code mit dem asynchronen Attribut und einigen der fortgeschritteneren Funktionen des Frameworks. Der Beitrag kann unter http://jonas.follesoe.no/UnitTestingAsynchronousSilverlightCode.aspx

gefunden werden Der zweite Beitrag ist über Ihre Tests mit dem Tag-Attribut zu organisieren. Auf diese Weise können Sie Unit-/Integration-/Performance-/UI-Tests in derselben Testsuite durchführen, jedoch nur jeweils eine bestimmte Kategorie ausführen. Der Blog-Eintrag kann auf http://jonas.follesoe.no/EfficientTestingInSilverlight2UsingTags.aspx

+0

Ziemlich cool .. vielen Dank für den Austausch: o) – NikolaiDante

1

Sie sollten auch versuchen SilverUnit zu verwenden für echte Silverlight unit testing gefunden werden, ist es eine wirklich einfache Framework zu verwenden, die Sie auch von den Feinheiten der Silverlight-Ereignisverarbeitung schützt.

2

Hier ist meine definitive Anleitung zum Komponententest in Silverlight 5. Dies wird zu allen Punkten führen, die Sie tun müssen, wenn Sie keine Ahnung haben, wo Sie anfangen sollen. In diesem Handbuch geht es darum, innerhalb Ihres Projekts zu testen. Sie werden nicht benötigen ein 2. odr 3. Silverlight-Projekt zum Komponententest.

0.) Schließen Sie Ihr Silverlight-Projekt.

1.) Laden Sie das Silverlight 5 Toolkit here herunter und installieren Sie es.

2.) Öffnen Sie Ihren Windows Explorer zu C gehen: und dann für diese beiden Dateien suchen:

Microsoft.Silverlight.Testing.dll

Microsoft.VisualStudio.QualityTools. UnitTesting.Silverlight.dll

Wenn Sie sie nicht finden, stimmt etwas nicht.

3.) Registrieren Sie diese zwei DLLs im GAC. Gehen Sie dazu folgendermaßen vor:

Öffnen Sie die Visual Studio-Konsole als Administrator. Kopieren Sie alle Anweisungen und führen Sie sie in der Konsole aus:

gacutil/i "C: \ Programme \ Microsoft SDKs \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Testing \ Microsoft.Silverlight.Testing.dll“

gacutil/i "C: \ Programme \ Microsoft SDKs \ Silverlight \ v5.0 \ Toolkit \ DEC11 \ Testing \ Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll"

beachten Sie bitte, dass die Pfade zu den DLLs auf Ihrem Computer unterschiedlich sein können. Nur den richtigen Pfad für Ihren Maschinentyp.

4. die beiden DLLs von oben wie ein Öffnen Sie die Silverlight-Projekt und fügen Verweis auf Silverlight-Projekt Nicht zu Ihrem Webprojekt.

5. Fügen Sie Ihrem Projekt die folgende Klasse hinzu. Es spielt keine Rolle, wo Sie es hinstellen. Ich habe einen extra Ordner für meine Tests, aber spielt keine Rolle.

using System; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Ink; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using Microsoft.Silverlight.Testing; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace Test 
{ 
[TestClass] 
public class Test_Svc_Login 
{ 
    [TestMethod] 
    public void Always_True() 
    { 
     Assert.IsTrue(true); 
    } 

    [TestMethod] 
    public void Always_False() 
    { 
     Assert.IsTrue(false); 
    } 

    [TestMethod] 
    public void Even_MoreAlways_False() 
    { 
     Assert.IsTrue(false); 
    } 
} 

} 

6. Hit F6, versuchen zu kompilieren. Alles sollte an diesem Punkt in Ordnung sein.

7. Suchen Sie die Datei "App.xaml.cs" in Ihrem Projekt. In dieser Datei finden Sie die folgende Anweisung. Natürlich "neue Gui.MainPage();" wird in Ihrem Projekt anders sein. Suchen Sie einfach nach RootVisual.

this.RootVisual = new Gui.MainPage(); 

Sie ersetzen diese Anweisung durch den folgenden Codeblock.

#if DEBUG 
      if (System.Diagnostics.Debugger.IsAttached) 
      { 
       //You hit F5 ONLY 
       this.RootVisual = new Gui.MainPage(); 
      } 
      else 
      { 
       //You hit CTRL + F5 
       RunUnitTests(); 
      } 
#else 
      //You are in Release Mode. You hit whatever you want. 
      this.RootVisual = new Gui.MainPage(); 
#endif 

Nun fügen Sie die folgende Routine zu Ihrer App.xaml.cs Klasse:

private void RunUnitTests() 
     { 

#if DEBUG 
      //You hit CTRL + F5 
      var settings = new UnitTestSettings(); 
      settings.TestHarness = new UnitTestHarness(); 
      settings.StartRunImmediately = true; 
      settings.TestAssemblies.Add(Assembly.GetExecutingAssembly()); 
      this.RootVisual = UnitTestSystem.CreateTestPage(settings); 
#endif 
     } 

8. Hit F6 zu überprüfen, ob alles in Ordnung ist.

9. Hit F5 zu sehen, wenn Sie noch normal debuggen können. Drücken Sie Strg + F5, um den Komponententest zu starten.

10. Sie sind fertig! Jetzt können Sie Unit-Test in Silverlight 5.

Bitte beachten Sie, dass die beiden DLLs aus dem Toolkit noch im "experimentellen" Modus sind. Es gibt keine offizielle Unterstützung. Denken Sie auch daran, dass es darum geht, die Tests in Ihrem Projekt auszuführen. Jetzt könnten Sie diese Tests sogar auf einem Client-Rechner im Freigabemodus ausführen. Wenn Sie das tun wollen, müssen Sie #if DEBUG Statements ändern, aber ich denke, Sie sehen, worum es geht.

Natürlich können Sie diesen Ansatz in einem zusätzlichen Projekt in Komponententest ändern.

Glückliche Kodierung.

TIPP: Wenn Sie Probleme mit System.Core.dll nach der Registrierung der beiden DLLs haben, nur gacutil verwenden, um die System.Core.dll wieder zu registrieren.Wie folgt aus:

gacutil/i "C: \ Programme \ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v5.0 \ System.Core.dll"

+0

Vielen Dank veeeery viel !! Genau das habe ich gesucht und toll gearbeitet. Ich hatte das System.Core-Problem, das Sie erwähnt haben, aber die erneute Registrierung hat auch funktioniert. –