NUnit hat eine Funktion namens Werte, wie unten:
[Test]
public void MyTest(
[Values(1,2,3)] int x,
[Values("A","B")] string s)
{
// ...
}
Dies bedeutet, dass die Testmethode sechsmal ausgeführt wird:
MyTest(1, "A")
MyTest(1, "B")
MyTest(2, "A")
MyTest(2, "B")
MyTest(3, "A")
MyTest(3, "B")
Wir verwenden jetzt MSTest. Gibt es dafür ein Äquivalent, damit ich denselben Test mit mehreren Parametern ausführen kann?
[TestMethod]
public void Mytest()
{
// ...
}
c#
unit-testing
nunit
mstest
vs-unit-testing-framework
Das Licht
quelle
quelle
Antworten:
Es wird in MSTest leider nicht unterstützt. Anscheinend gibt es ein Erweiterungsmodell, das Sie selbst implementieren können . Eine andere Möglichkeit wäre die Verwendung datengesteuerter Tests .
Meine persönliche Meinung wäre jedoch, einfach bei NUnit zu bleiben ...
BEARBEITEN: Ab Visual Studio 2012, Update 1, verfügt MSTest über eine ähnliche Funktion. Siehe @ McAdens Antwort unten.
quelle
BEARBEITEN 4 : Dies scheint in MSTest V2 am 17. Juni 2016 abgeschlossen zu sein: https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest- v2 /
Ursprüngliche Antwort :
Seit ungefähr einer Woche ist in Visual Studio 2012 Update 1 etwas Ähnliches möglich:
BEARBEITEN : Dies scheint nur im Unit-Test-Projekt für WinRT / Metro verfügbar zu sein . Schade
BEARBEITEN 2 : Die folgenden Metadaten werden mit "Gehe zu Definition" in Visual Studio gefunden:
BEARBEITEN 3 : Dieses Problem wurde in den UserVoice-Foren von Visual Studio angesprochen. Letzte Aktualisierung besagt:
https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/3865310-allow-use-of-datatestmethod-datarow-in-all-unit
quelle
Diese Funktion ist jetzt in der Vorabversion und funktioniert mit VS 2015.
Beispielsweise:
quelle
Da niemand erwähnt hat - nicht genau das gleiche wie die
Value
(oderTestCase
) Attribute von NUnit , aber MSTest hatDataSource
Attribute, mit denen Sie ähnliche Dinge tun können. Sie können es an eine Datenbank oder eine XML-Datei anschließen - nicht so einfach wie die Funktion von NUnit, erledigt aber die Aufgabe.quelle
MSTest verfügt über ein leistungsstarkes Attribut namens DataSource . Mit diesem Attribut können Sie nach Bedarf einen datengesteuerten Test durchführen. Sie können Ihre Testdaten in XML, CSV oder in einer Datenbank haben. Hier sind einige Links, die Sie führen
http://visualstudiomagazine.com/articles/2009/09/15/unit-testing-with-vsts2008-part-3.aspx http://msdn.microsoft.com/en-us/library/ms182527.aspx
http: //msdn.microsoft.com/en-us/library/ms243192.aspx
Hoffe das wird dir helfen.
quelle
Es ist sehr einfach zu implementieren - Sie sollten
TestContext
Eigenschaft und verwendenTestPropertyAttribute
.Beispiel
BEARBEITEN:
Ich habe einige Erweiterungsmethoden vorbereitet, um den Zugriff auf die
TestContext
Immobilie zu vereinfachen und so zu handeln, als hätten wir mehrere Testfälle. Siehe Beispiel zur Verarbeitung einfacher Testeigenschaften hier:und Beispiel zum Erstellen komplexer Testobjekte:
Werfen Sie einen Blick auf die Erweiterung Methoden und eine Reihe von Proben für weitere Details.
quelle
Es gibt natürlich eine andere Möglichkeit, dies zu tun, die in diesem Thread nicht behandelt wurde, nämlich die Vererbung der Klasse, die die TestMethod enthält. Im folgenden Beispiel wurde nur eine Testmethode definiert, es wurden jedoch zwei Testfälle erstellt.
In Visual Studio 2012 werden zwei Tests im TestExplorer erstellt:
DemoTest_A12_B4.test
quelle
MsTest unterstützt diese Funktion nicht, aber Sie können Ihr eigenes Attribut implementieren, um dies zu erreichen. Schauen Sie sich das Folgende an:
http://blog.drorhelper.com/2011/09/enabling-parameterized-tests-in-mstest.html
quelle
Ich konnte The
DataRowAttribute
in Visual Studio 2015 nicht zum Laufen bringen. Am Ende hatte ich Folgendes:Die wirkliche Lösung besteht darin, nur NUnit zu verwenden (es sei denn, Sie stecken in MSTest fest, wie ich es in diesem speziellen Fall bin).
quelle