8

Wir haben Silverlight-Unit-Tests erstellt, indem wir ein Unit-Test-Projekt für Plain Vanilla .net erstellt haben, alle Referenzen außer dem Unittestframework entfernt und Referenzen zu den von uns benötigten SL-Assemblys hinzugefügt haben. System.Core, ...). Weitere Informationen finden Sie unter this Blogpost. Wir können dies tun, da wir uns an das MVVM-Muster halten und nahezu keinen Code im Codebehind haben. Wir testen nicht die Ansicht, sondern die Funktionalität in allen dahinter liegenden Schichten (im Prinzip VM-M).Integrieren von Silverlight-Unit-Tests in TFS Build

Jetzt können wir die Silverlight-Logik in unserem Team jede Nacht testen. Das funktioniert ziemlich gut, bis wir beginnen, SL-Projekte und normale .NET-Projekte zu mischen. Wenn wir alle SL-Unit-Tests auswählen und ausführen, werden sie bestanden. Gleiches gilt für die .NET-Unit-Tests. Wenn wir sie alle auf einmal laufen lassen, scheitert entweder der eine oder der andere vollständig. Die Meldung, die wir sehen, besagt: "Unit Test Adapter warf Ausnahme: Kann einen oder mehrere der angeforderten Typen nicht laden. Holen Sie die LoaderExceptions-Eigenschaft für weitere Informationen.". Ich vermute, das Problem ist, dass diese beiden Tests unterschiedliche System-Assemblies verwenden, aber ich konnte das Problem nicht lokalisieren.

Hat jemand das versucht? Prost, Phil

Antwort

1

Ich vermute, dass es Probleme mit mehreren System, Mscorlib, etc. Bibliotheken in der App-Domäne, die wahrscheinlich die Testausführungsumgebung verwirren.

Können Sie dies in mehrere Testläufe für den TFS-Build trennen ODER vielleicht ein Msbuild-Skript mit Code erstellen, um mstest.exe für einen von ihnen aufzurufen und Ergebnisse auf diese Weise zu erhalten?

+0

Danke Jeff, wir haben es gelöst, indem wir mstest.exe in unserem Build-Skript zweimal aufgerufen haben (einmal für .NET-Tests, einmal für Silverlight-Tests). – Phil

1

Wie wäre es mit zwei separaten Build-Definitionen? Sie können beide auf die gleiche Weise oder gleichzeitig ausgelöst werden. Der einzige Unterschied besteht darin, dass Sie nur auf die SL-Projekte in einem und nur auf die .NET-Projekte in einem anderen verweisen.

Wenn Sie die Projekte nicht aus der Build-Definition referenzieren möchten, können Sie einige Lösungen für Ihre Builds erstellen und nur die SL-Projekte in einer Lösung und nur die .Net-Projekte in einer anderen referenzieren.

1

Sie können auch ein Silverlight-Testprojekt (erstellt aus der Silverlight Toolkit-Projektvorlage) verwenden und this solution verwenden, um Ihren Silverlight-Test auf Ihrem TFS-Build-Server auszuführen.

Verwandte Themen