Ich finde die TestCase
Funktion in NUnit sehr nützlich, um schnell Testparameter anzugeben, ohne für jeden Test eine eigene Methode zu benötigen. Gibt es etwas Ähnliches in MSTest?
[TestFixture]
public class StringFormatUtilsTest
{
[TestCase("tttt", "")]
[TestCase("", "")]
[TestCase("t3a4b5", "345")]
[TestCase("3&5*", "35")]
[TestCase("123", "123")]
public void StripNonNumeric(string before, string expected)
{
string actual = FormatUtils.StripNonNumeric(before);
Assert.AreEqual(expected, actual);
}
}
DataRow()
, siehe: blogs.msdn.microsoft.com/devops/2016/06/17/…Antworten:
Microsoft hat kürzlich "MSTest V2" angekündigt (siehe Blog-Artikel ). Auf diese Weise können Sie das
DataRow
Attribut -attribute konsistent (Desktop, UWP, ...) verwenden !Auch hier erkennt der Test Explorer von Visual Studio Express diese Tests leider nicht. Aber zumindest die "vollständigen" VS-Versionen unterstützen diese Funktion jetzt!
Um es zu verwenden, installieren Sie einfach die NuGet-Pakete MSTest.TestFramework und MSTest.TestAdapter (beide ab sofort vorab verfügbar ).
Ältere Antwort:
Wenn Sie sich nicht an MSTest halten müssen und es nur verwenden, um die Tests über den Test Explorer ausführen zu können
weil Sie nur eine Visual Studio Express Edition haben, dann könnte dies eine Lösung für Sie sein:Es gibt die VsTestAdapter VSIX-Erweiterung , mit der NUnit-Tests über den Test Explorer ausgeführt werden können. Leider können VS Express-Benutzer keine Erweiterungen installieren ... Aber zum Glück wird der VsTestAdapter auch mit einem einfachen NuGet-Paket geliefert !
Wenn Sie ein VS Express-Benutzer sind, installieren Sie einfach das VsTestAdapter NuGet-Paket und genießen Sie die Ausführung Ihrer NUnit-Tests / Testfälle über den Test Explorer!Leider ist die oben genannte Aussage nicht wahr. Es ist zwar durchaus möglich, das Paket über eine Express-Edition zu installieren, es ist jedoch nutzlos, da der Test Explorer nicht verwendet werden kann. Zuvor gab es eine Randnotiz zu einer älteren Version des TestAdapters, die von der Beschreibungsseite von 2.0.0 entfernt wurde :
quelle
Ich weiß, dass dies eine späte Antwort ist, aber hoffentlich hilft sie anderen.
Ich habe überall nach einer eleganten Lösung gesucht und selbst eine geschrieben. Wir verwenden es in über 20 Projekten mit Tausenden von Komponententests und Hunderttausenden von Iterationen. Nie einen Schlag verpasst.
https://github.com/Thwaitesy/MSTestHacks
1) Installieren Sie das NuGet- Paket.
2) Erben Sie Ihre Testklasse von TestBase
3) Erstellen Sie eine Eigenschaft, ein Feld oder eine Methode, die IEnumerable zurückgibt
4) Fügen Sie Ihrer Testmethode das Attribut MSTest DataSource hinzu und verweisen Sie dabei auf den oben genannten IEnumerable-Namen. Dies muss voll qualifiziert sein.
Endergebnis: 3 Iterationen wie bei der normalen DataSource :)
quelle
Ich weiß, dass dies eine weitere späte Antwort ist, aber in meinem Team, das an die Verwendung des MS Test-Frameworks gebunden ist, haben wir eine Technik entwickelt, die sich nur auf anonyme Typen stützt, um ein Array von Testdaten zu speichern, und auf LINQ, um jede Zeile zu durchlaufen und zu testen. Es erfordert keine zusätzlichen Klassen oder Frameworks und ist in der Regel recht einfach zu lesen und zu verstehen. Es ist auch viel einfacher zu implementieren als datengesteuerte Tests mit externen Dateien oder einer verbundenen Datenbank.
Angenommen, Sie haben eine Erweiterungsmethode wie die folgende:
Sie können ein Array anonymer Typen verwenden, die mit LINQ kombiniert sind, um Tests wie diesen zu schreiben:
Bei Verwendung dieser Technik ist es hilfreich, eine formatierte Nachricht zu verwenden, die die Eingabedaten in Assert enthält, um festzustellen, in welcher Zeile der Test fehlschlägt.
Ich habe über diese Lösung mit mehr Hintergrund und Details auf AgileCoder.net gebloggt .
quelle
Khlr gab eine gute detaillierte Erklärung und anscheinend begann dieser Ansatz in VS2015 Express für Desktop zu funktionieren. Ich habe versucht, den Kommentar zu hinterlassen, aber mein mangelnder Ruf hat es mir nicht erlaubt.
Lassen Sie mich die Lösung hier kopieren:
Um es zu verwenden, installieren Sie einfach die NuGet-Pakete MSTest.TestFramework und MSTest.TestAdapter .
Ein Problem ist
Entfernen Sie daher Microsoft.VisualStudio.QualityTools.UnitTestFramework aus den Referenzen des Projekts.
Sie können gerne die ursprüngliche Antwort bearbeiten und diese löschen.
quelle
MSTest hat das DataSource-Attribut, mit dem Sie ihm eine Datenbanktabelle, CSV, XML usw. zuführen können. Ich habe es verwendet und es funktioniert gut. Ich kenne keine Möglichkeit, die Daten wie oben in Ihrer Frage als Attribute zu platzieren, aber es ist sehr einfach, die externen Datenquellen einzurichten, und Dateien können in das Projekt aufgenommen werden. Ich hatte es eine Stunde nach meinem Start laufen lassen und bin kein Experte für automatisierte Tests.
https://msdn.microsoft.com/en-us/library/ms182527.aspx?f=255&MSPPError=-2147217396 enthält ein vollständiges Lernprogramm, das auf Datenbankeingaben basiert.
http://www.rhyous.com/2015/05/11/row-tests-or-paramerterized-tests-mstest-xml/ enthält ein Tutorial, das auf der Eingabe von XML-Dateien basiert.
quelle