Parametrierung im Test xUnit.net ähnlich wie NUnit
Sind es bedeutet in xUnit.net Rahmen ähnlich der folgenden Funktionen von NUnit?
[Test, TestCaseSource("CurrencySamples")]
public void Format_Currency(decimal value, string expected){}
static object[][] CurrencySamples = new object[][]
{
new object[]{ 0m, "0,00"},
new object[]{ 0.0004m, "0,00"},
new object[]{ 5m, "5,00"},
new object[]{ 5.1m, "5,10"},
new object[]{ 5.12m, "5,12"},
new object[]{ 5.1234m, "5,12"},
new object[]{ 5.1250m, "5,13"}, //round
new object[]{ 5.1299m, "5,13"}, //round
}
Generiert diese 8 separate tests in NUnit-GUI
[TestCase((string)null, Result = "1")]
[TestCase("", Result = "1")]
[TestCase(" ", Result = "1")]
[TestCase("1", Result = "2")]
[TestCase(" 1 ", Result = "2")]
public string IncrementDocNumber(string lastNum) { return "some"; }
Generiert 5 separate tests und automatisch vergleichen Sie die Ergebnisse (Assert.Equal()
).
[Test]
public void StateTest(
[Values(1, 10)]
int input,
[Values(State.Initial, State.Rejected, State.Stopped)]
DocumentType docType
){}
Generiert diese 6 kombinatorische tests. Unbezahlbar.
Paar Jahren habe ich versucht, xUnit und liebte es, doch es fehlte diesen Funktionen. Kann nicht ohne Sie Leben. Hat sich etwas geändert?
InformationsquelleAutor der Frage UserControl | 2012-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
xUnit bietet eine Möglichkeit zum ausführen von parametrisierte tests durch so genannte Daten Theorien. Das Konzept entspricht dem in NUnit aber die Funktionalität, die Sie bekommen, out of the box ist nicht vollständig.
Hier ein Beispiel:
In diesem Beispiel xUnit laufen die
Should_format_the_currency_value_correctly
test einmal für jedenInlineDataAttribute
jedes mal übergeben wird der angegebene Wert als argument.Daten Theorien erweiterungspunktdie Sie verwenden können, um neue Möglichkeiten zum ausführen von parametrisierten tests. Die Art und Weise dies geschieht, ist durch neue Attribute erstellen , prüfen und Optional wirken sich auf die Argumente und Rückgabewerte der Methoden testen.
Finden Sie ein gutes praktisches Beispiel, wie xUnit Daten Theorien erweitert werden können in AutoFixture's AutoData und InlineAutoData Theorien.
InformationsquelleAutor der Antwort Enrico Campidoglio
Lassen Sie mich werfen, noch eine Probe hier, nur für den Fall, es spart einige Zeit, um jemanden.
InformationsquelleAutor der Antwort Sevenate
Auf Ihre erste Anfrage, können Sie die Beispiele gefunden hier.
Können Sie konstruieren eine statische Klasse, die die nötigen Daten für eine Sammlung von tests
Dann, mit der MemberData-Attribut, definieren Sie die test als solche
oder wenn Sie C# 6.0,
Das erste argument MemberDataAttribute können Sie definieren, Mitglied verwenden Sie als Datenquelle, so haben Sie eine Menge Flexibilität auf Wiederverwendung.
InformationsquelleAutor der Antwort LewisM
Fand ich eine Bibliothek, die produziert gleichwertige Funktionalität zu NUnit ist
[Values]
Attribut namens Xunit.Kombinatorische:Es ermöglicht Ihnen die Angabe der parameter-Werte:
Oder Sie können implizit haben, es herauszufinden, die minimale Anzahl der Aufrufe decken alle möglichen Kombinationen:
InformationsquelleAutor der Antwort Adam
Nahm ich auf dem board alle Antworten hier und zusätzlich XUnit ist
TheoryData<,>
generischen Typen, um mir zu geben, einfach, leicht zu Lesen und geben sicheren Daten die Definitionen für die 'MemberData' - Attribut auf meinem test gemäß diesem Beispiel:NB Mit VS2017(15.3.3), C#7, & XUnit-2.2.0 .NET Core
InformationsquelleAutor der Antwort Peter
Laut dieser Artikel in xUnit, die Sie haben drei "Parametrisierung" Optionen:
InlineData Beispiel
ClassData Beispiel
MemberData Beispiel
InformationsquelleAutor der Antwort itim