Habe heute wieder mal NUnit (2.2) in ein VS.2005 Projekt eingebaut!
Meine speziellen Anforderungen:
die Konfiguration muss "teamfähig" sein d.h. ich setze Subversion (Abk. svn) ein und jedes Teammitglied soll nach einem svn:update sofort meine Tests einestze können.
Dazu kommen die NUnit Dll's in ein eigenes Unterverzeichnis im Projektordner sodass jeder die Files über realtive Pfadangaben erreichen kann (meine Teamfähigen Projekte sind immer auf relativ-Pfaden ausfegabut sodass kein Teammitglied gezwungen ist beim svn:checkout auf ein bestimmtes Laufwerk/Verezcihnis zu achten) und werden svn unterstellt.
ich setze zwar NUnit ein möchte aber auf alle möglichen und verfügbaren Zusatzprodukte/VS.Addins verzichten weil dies nur das Neuaufsetzen der Arbeitsplätze bei Teammitgliedern verkompliziert.
Ich möchte die grafische Benutzeroberfläche von NUnit verwenden.
Früher habe ich dazuz ein NUnit Projekt erstellt und dann im VS.2005 diesen Dateityp mit der NUnit Gui verknüpft.
Nachteil: das muss ich auf jedem PC per Hand machen die Konfiguration lässt sich nicht per svn verteilen.
Heute habe ich eine schöne Lösung dafür gefunden:
Das Projekt für den TestCode ist nicht mehr eine Dll (Class Library) sondern eine Windows Anwendung!
(NUnit ist es per Definition egal ob der Testcode in einer Dll oder exe Steht)
Zusätzlich zu den üblichen Referenzen auf "NUnit.Framework" und "NUnit.Core" wird auch die Assembly "nunit-gui-runner"
referenziert!
Der Startpunkt für das Windows-Projekt sieht jetzt so aus:
[STAThread]public static int Main(string[] args)
{
return NUnit.Gui.AppEntry.Main(new string[1] {System.Reflection.Assembly.GetExecutingAssembly().Location});}
}
Was passiert?
Ich starte das NUnit GUI und übergebe als Parameter die TestAssembly selbst....
Ergebnis:
Nun kann jedes meiner Teammitglieder, nach einem svn:update sofort auf meine Tests zugreifen incl. der grafischen Testumgebung
-ohne Nunit jemals selbst installiert zu haben
- ohne irgendwelchen Konfigurationsaufwand!
indem einfach im VS das Testprojekt als "Set as StartUp Project..." gesetzt wird!