web-dev-qa-db-ger.com

Visual Studio 2012 MSTest vs NUnit Vor- und Nachteile

Wir müssen entscheiden, welche Technologie wir für unsere Komponententests verwenden sollen. Derzeit verwenden wir Visual Studio 2010 und sind mit dem damit verbundenen MSTest nicht zufrieden. Es ist fehlerhaft, in der Bereitstellung schlecht (z. B. wird das Ausgabeverzeichnis für die Testeinstellungen nicht richtig erkannt) und es gibt mehrere Probleme beim Testen von Baugruppen in 32-Bit- und 64-Bit-Versionen. Um das noch schlimmer zu machen, hat MSTest keine gute Impedanzanpassung an unser Jenkins Build-System. Wir haben daher überlegt, in NUnit zu ziehen. Allerdings hat niemand in unserem Team eine gute Beziehung zu NUnit. In Kürze werden wir auch in Visual Studio 2012 einsteigen. 

Ich muss die Vor-und Nachteile von Visual Studio 2012 MSTest vs Nunit neueste Version kennen . Da die meisten Artikel über den Stapelüberlauf ältere Versionen von VS betreffen, beziehen sie sich nicht auf uns. Ich vermute, Microsoft hat MSTest seit 2010 stark verbessert. Bitte geben Sie einen unparteiischen Vergleich mit technischen Detailproblemen an, die Sie in beiden Technologien hatten ( nur neuere Versionen ). 

48

Ich verwende momentan sowohl MSTest als auch NUnit. IMHO NUnit ist immer noch eine bessere Lösung. Wenn Sie über eine Visual Studio 2012 Premium Edition verfügen, ist es eigentlich ganz nett, abgesehen von der Tatsache, dass Sie scheinbar keine Tests zusammenfassen können. Ich mag die Tatsache, dass sie in Visual Studio integriert ist, aber das Fehlen einer Gruppierung und die Möglichkeit, eine Teilmenge von Tests auszuführen, ohne sie manuell auszuwählen, ist ein großes Problem.

Die Coverage-Analyse ist auch in Premium ziemlich ordentlich. Es ist schnell und gibt Ihnen das, was Sie schnell brauchen. Es ist jedoch eine Premium-Funktion.

Da es in MSTest noch immer an Funktionen mangelt (sogar entfernte Funktionen seit vs2010), würde ich immer noch empfehlen, NUnit für Unit-Tests zu verwenden. Die Vorteile umfassen die Testgruppierung nach Namespace, die Möglichkeit, Testfallanmerkungen hinzuzufügen (wobei derselbe Test mehrmals mit verschiedenen Parametern ausgeführt wird), und er eignet sich gut für die Coverage-Analyse mit Opencover und Report Generator. Die wichtigste zitierte Con ist, dass es nicht wie MSTest integriert ist, es hängt also wirklich davon ab, wie viel für Sie wichtig ist, ob dies eine Con ist oder nicht.

27
Matt Esch

@Biranchi: Es ist nicht mehr wichtig, welches Gerätetest-Framework Sie in Visual Studio 2012 (und höher) verwenden. Sehen Sie meinen Blogpost hier, die Fortsetzung zu dem, auf den Sie sich beziehen. http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/20/part-2-verwendung-mit-different-test-frameworks-in-the-unit-test-Explorer. aspx

Sie können sogar Tests aus verschiedenen Frameworks kombinieren und abgleichen, bis hin zur Methodenebene !!
Dies bedeutet, dass Sie sogar alten Code ohne negative Nebeneffekte von einem zum anderen verschieben können.

In diesem Abschnitt erfahren Sie auch, wie Sie mit Nuget den NUnit-Adapter in der Lösung installieren und den Entwickler für die Installation selbst frei machen. http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/11/part-3-unit-testing-mit-traits-and-code-coverage-in-visual-studio -2012-using-the-tfs-build-and-the-new-nuget-adapter-approach.aspx

@Sriwantha: MSTest ist ein einfacheres Framework als NUnit. NUnit (und auch XUnit) bieten Ihnen mehr Flexibilität, was wiederum dazu führt, dass weniger Code geschrieben wird. Ein Beispiel: Wenn Sie Kategorien verwenden (und Sie sollten), benötigt MSTest eine Kategorie, um jede Methode zu dekorieren. Mit NUnit können Sie die Klasse dekorieren. Dies wird für alle Methoden in dieser Klasse wirksam. Mit NUnit können Sie auch stark typisierte Kategorien verwenden 

public class Integration : Category {}

Dies reicht aus, um eine Kategorie zu deklarieren, die Sie anstelle von verwenden können 

Category("Integration");

wo Sie Rechtschreibfehler riskieren.

NUnit hat eine wesentlich bessere Unterstützung für datengetriebene Tests .__U. NUnit unterstützt auch Theorien

um ein paar zu nennen. 

10

Haben Sie die Traits-Funktionalität von VS untersucht? http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual- studio-2012-update-1-part-1-using-traits-in-the-unit-test-Explorer.aspx

Die Gruppierung ist in mstest (2012 Update 1) im Vergleich zu Nunit wesentlich besser.

1
Biranchi Panda

VS2012 erlaubt die Kategorisierung von Tests in Gruppen, wenn Sie über "Update 1" oder höher verfügen: http://msdn.Microsoft.com/en-us/library/hh270865.aspx#BKMK_Grouping_and_filtering_the_test_list

1
Martin Noreke

Noch eine Sache, die hier hinzugefügt werden muss. Anscheinend funktioniert die MSTEST-Engine in bestimmten Szenarien nicht gut mit TFS Build. Wenn Sie TFS build verwenden, werden die übersprungenen Tests (mit dem Attribut Ignore gekennzeichnet) nicht gemeldet. Es wird nur Assert.Inconclusive enthalten. Wenn dies ein Problem ist, sollten Sie NUnit anstelle von MSTest verwenden.

0
Saumil