Heim > Backend-Entwicklung > C++ > Wie kann ich komplexe Parameter an die [Theorie]-Methoden von XUnit übergeben?

Wie kann ich komplexe Parameter an die [Theorie]-Methoden von XUnit übergeben?

DDD
Freigeben: 2025-01-04 14:50:39
Original
256 Leute haben es durchsucht

How Can I Pass Complex Parameters to XUnit's [Theory] Methods?

Übergabe komplexer Parameter an [Theorie]

XUnit stellt das InlineData-Attribut bereit, das es Benutzern ermöglicht, mehrere Tests mit einfachen Datenparametern zu generieren. Beim Umgang mit komplexeren Parametern, beispielsweise einer Liste benutzerdefinierter Klassen, ist jedoch ein anderer Ansatz erforderlich.

MemberData- und ClassData-Attribute

XUnit bietet mehrere Optionen für Übergabe komplexer Parameter an [Theory]-Methoden. Ein Ansatz besteht darin, das MemberData-Attribut zu verwenden. Dieses Attribut weist XUnit an, eine Eigenschaft auszuführen, die ein IEnumerable zurückgibt. Jedes Objekt[] im IEnumerable wird als Parameter für einen einzelnen Aufruf Ihrer [Theory]-Methode „entpackt“.

Eine andere Option ist die Verwendung des ClassData-Attributs. ClassData funktioniert ähnlich wie MemberData, ermöglicht jedoch die gemeinsame Nutzung von Datengeneratoren zwischen Tests in verschiedenen Klassen oder Namespaces. Es trennt auch die „Datengeneratoren“ von den eigentlichen Testmethoden.

ClassData-Beispiel mit statischer Member-Unterstützung

Um ClassData mit statischer Member-Unterstützung zu verwenden, können Sie eine definieren Klasse mit einer statischen Eigenschaft, die IEnumerable zurückgibt, wie unten gezeigt:

public class IndexOfData
{
    public static IEnumerable<object[]> SplitCountData => 
        new List<object[]>
        {
            new object[] { "hello world", 'w', 6 },
            new object[] { "goodnight moon", 'w', -1 }
        };
}
Nach dem Login kopieren

In Ihrer Testklasse können Sie dies tun Wenden Sie dann das [Theory]-Attribut an und geben Sie das statische Mitglied mithilfe der MemberType-Eigenschaft des Attributs an:

[Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))]
public void IndexOf(string input, char letter, int expected) {...}
Nach dem Login kopieren

Durch die Nutzung dieser Attribute können Sie komplexe Parameter an Ihre [Theory]-Methoden übergeben und so Tests durchführen verschiedene Szenarien effizient.

Das obige ist der detaillierte Inhalt vonWie kann ich komplexe Parameter an die [Theorie]-Methoden von XUnit übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage