C#, NUnit TestCaseSource Parameter Übergeben
Habe ich die folgende Methode erzeugt ein set von test-cases!
public IEnumerable<ResultsOfCallMyMethod> PrepareTestCases(param1)
{
foreach (string entry in entries)
{
yield return callMyMethod(param1);
}
}
Wie kann ich pass param vom Typ string als parameter an meine PrepareTestCases()
Methode?
Gibt es eine Möglichkeit, Folgendes zu tun:
[Test, Category("Integration"), TestCaseSource("PrepareTestCases", param1)]
public void TestRun(ResultsOfCallMyMethod testData)
{
//do something!
}
InformationsquelleAutor sparkr | 2015-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn man sich TestCaseSourceAttribute doc Sie werden sehen, es gibt keine Methode zum übergeben der parameter an die Methode, die Renditen Testfälle.
Die Methode, die Testfälle, sollte parameterlosen.
So, angenommen, du gehst zu vermeiden code-Duplizierung, und Sie müssen, um die Wiederverwendung der gleichen Methode zum generieren von ein paar test-case-Listen, würd ich dir empfehlen, Folgendes zu tun:
Schreiben parametrisierte Methode, die tatsächlich generiert test Fälle setzt:
(
PrepareTestCases()
bereits tut)Schreiben parameterlosen Wrapper, die rufen Testfälle generator und übergeben Sie die gewünschten parameter gibt es:
Schreiben von test-Methoden und übergeben paremeterless-Wrapper gibt es als test-Fall Quellen:
InformationsquelleAutor Alexander Stepaniuk
Habe ich eine änderung vorgenommen, die für diese in der neuesten version von nunit, die demnächst veröffentlicht wird (3.2).
https://github.com/nunit/nunit/blob/4f54fd7e86f659682e7a538dfe5abee0c33aa8b4/CHANGES.txt
Ist es nun möglich, so etwas zu tun
Nie Verstand. Ich fand es heraus: object[] müssen explizit geschrieben werden. Btw nameof() auch erlaubt, trotz der Fehlermeldung
InformationsquelleAutor Joe
In meinem Fall würde ich gerne das laden von Daten aus einer CSV-Datei, aber ich konnte nicht übergeben Sie den Dateinamen, um die "datasource".
Nachdem wir ein bisschen herum komme ich an diese zwei-cent-Lösung.
Zuerst habe ich geerbt TestCaseSourceAttirbute
dann habe ich die Daten-Schicht, in meinem Fall eine CSV-reader.
Dann habe ich eine Klasse angelegt, nur mit dem Rahmen, um Eigenschaften zu enthalten, die mit den Dateipfaden. Es gibt eine namens-Konvention über die Eigenschaft, dass die ClassTypeName + "Filename".
Zu diesem Zeitpunkt nur schmücken entsprechend dem test, mit der Art von Klassen für die Zuordnung der Daten und die Klasse enthalten, dass der Datei-Pfad.
Hoffe das kann ein wenig helfen.
InformationsquelleAutor Andrea Celin