Heim >Backend-Entwicklung >C++ >Wie kann ich komplexe Parameter an xUnit-Theorietests übergeben?
Übergabe komplexer Parameter an [Theorie]
In Xunit können Sie mit dem InlineData-Attribut individuelle Tests für jeden bereitgestellten Datensatz erstellen. Was aber, wenn Ihre Methode einen komplexen Parameter akzeptiert, beispielsweise eine Liste benutzerdefinierter Objekte?
Um diese Situation zu bewältigen, bietet XUnit das MemberData-Attribut. Durch Definieren einer Eigenschaft, die IEnumerable
MemberData-Beispiel:
public class StringTests2 { [Theory, MemberData(nameof(SplitCountData))] public void SplitCount(string input, int expectedCount) { var actualCount = input.Split(' ').Count(); Assert.Equal(expectedCount, actualCount); } public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "xUnit", 1 }, new object[] { "is fun", 2 }, new object[] { "to test with", 3 } }; }
In XUnit Version 2.0 oder höher können Sie das [MemberData]-Attribut für eine Methode verwenden, die IEnumerable< zurückgibt. Objekt[]>. Das folgende Beispiel zeigt dies:
Beispiel für überladene Mitgliedsdaten:
public class StringTests3 { [Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) { var actual = input.IndexOf(letter); Assert.Equal(expected, actual); } } public class IndexOfData { public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "hello world", 'w', 6 }, new object[] { "goodnight moon", 'w', -1 } }; }
Durch die Verwendung dieser Techniken können Sie komplexe Parameter effektiv an Ihre Theorietests übergeben.
Das obige ist der detaillierte Inhalt vonWie kann ich komplexe Parameter an xUnit-Theorietests übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!