Automatisiert nach jedem Checkin Unit Tests laufen zu lassen ist eine der Vorzüge eines Build Servers - mit TeamCity kann man neben NUnit Tests auch bequem MSTests laufen lassen. Allerdings gibt es dabei ein paar Tücken.
MSTest - Abhängigkeiten
MSTest ist Microsofts Testframework, welches direkt in Visual Studio integriert ist. Es hat allerdings viele Abhängigkeiten direkt zu Visual Studio.
MSTest + BuildServer
Um auf einen Build Server (z.B. über TeamCity) MSTests laufen zu lassen, muss man entweder ein Visual Studio installieren oder man versucht diesen 20+ Schritte Leitfaden zu folgen. MSTests benötigt viele Dlls und einige Registryeinträge die Visual Studio mitbringt, daher ist es nicht ohne weiteres möglich diese Tests auf einem anderen System ablaufen zu lassen.
Wenn einen der beiden Sachen erfolgreich durchlaufen hat, kann man nun im TeamCity die passenden Einstellungen machen:
Ich habe hier nur die MSTest assemblies mit angegeben. Als ich das MSTest Config File angegeben habe, wollte er irgendwie nicht. Allerdings muss man die Pfade bei den assemblies wie folgt machen:
%system.teamcity.build.checkoutDir%\PROJECTDIR\bin\Debug\NAME.dll
Es können mehrere Assemblies eingegeben werden. Diese Einstellung habe ich gespeichert und nun werden auch die Unit Tests mit berücksichtigt:
Man kann sich auch auf der Weboberfläche durch die Tests hangeln und nette Statistiken bestaunen. Ich verweise wieder auf die Live Demo Seite von TeamCity.
Visual Studio auf Build Server ist böse!
Im Prinzip ja. Leider gibt es wohl (neben der 20+ Anleitung) keinen Weg MSTest auszuführen ohne diese zu NUnit etc. zu "konvertieren" ;)
Lizenztechnisch ist das allerdings in einer Visual Studio Lizenz allerdings bereits abgedeckt - also falls es da bedenken gibt :)