Ich bin gerade immer in TDD, und von der Suche rund um, die allgemeine concensis scheint zu sein, eine eins zu eins Abbildung von einem Code-Projekt zu einem Test-Projekt haben. Meine Frage ist, wenn Sie diesen Weg folgen, und haben mehrere Test-Assemblies, was ist der beste Weg, um diese als Teil eines NAnt-Skripts laufen? Falls es einen Unterschied macht, verwende ich NUnit als mein Test-Framework.
Antworten
Zu viele Anzeigen?Sie können ein "Testprojekt" über die NUnit-GUI erstellen und es in einer Datei speichern. In der GUI können Sie dem Projekt die Test-DLLs hinzufügen, die ihrerseits auf die zu testenden Dlls verweisen.
Sie können diese Datei dann an die NUnit-Konsole von NAnt aus übergeben. z.B.
<property name="nunit.output" value="${dir.reports.nunit}\nunit-results.xml" />
<property name="nunit.input" value="proj.nunit" />
<exec program="${dir.tools}\nunit\bin\nunit-console.exe" failonerror="true">
<arg value="${nunit.input}" />
<arg value="/xml:${nunit.output}" />
</exec>
Auf diese Weise muss NAnt nichts über die Test-Dlls wissen, sondern nur über das NUnit-Projekt, das diese Informationen enthält.
Ich würde vorschlagen, dass Sie am besten beide Projekte aus NAnt einzeln kompilieren, indem Sie den CSC-Befehl verwenden, der auf die einzelnen Projektdateien (csproj) verweist und nicht auf die Lösung. Verwenden Sie dann den Befehl nunit-console (als separate Nant-Aufgabe), um Ihre Tests auszuführen.
Ob Sie ein einziges großes Skript/eine einzige Datei erstellen, das/die dies tut, oder separate Skripte für jedes Projekt oder jede Aufgabe, bleibt Ihnen überlassen (oder wie komplex Ihre Projekte sind).
Ich habe die Builds meines Teams so eingerichtet, dass ich ein "Master"-Build-Skript habe, das andere Build-Skripte aufruft, um bestimmte Aufgaben auszuführen. Zum Beispiel ruft "master" "compile" und dann "test" auf (wobei die Ergebnisse des "compile"-Skripts entsprechend übergeben werden). Auf diese Weise wird die Kompilierung meines Kernprojekts von den automatisierten Tests getrennt.