Ich bin neu in TDD und xUnit und möchte meine Methode testen, die ungefähr so aussieht:
List<T> DeleteElements<T>(this List<T> a, List<T> b);
Gibt es eine Assert-Methode, die ich verwenden kann? Ich denke so etwas wäre schön
List<int> values = new List<int>() { 1, 2, 3 };
List<int> expected = new List<int>() { 1 };
List<int> actual = values.DeleteElements(new List<int>() { 2, 3 });
Assert.Exact(expected, actual);
Gibt es so etwas?
In der aktuellen Version von XUnit (1.5) können Sie nur verwenden
Die obige Methode führt einen Element-für-Element-Vergleich der beiden Listen durch. Ich bin nicht sicher, ob dies für eine frühere Version funktioniert.
quelle
Wenn Sie mit xUnit die Eigenschaften jedes zu testenden Elements auswählen möchten, können Sie Assert.Collection verwenden.
Dies testet die erwartete Anzahl und stellt sicher, dass jede Aktion überprüft wird.
quelle
Vor kurzem habe ich meine asp.net core 2.2 App verwendet
xUnit 2.4.0
undMoq 4.10.1
verpackt.In meinem Fall habe ich es geschafft, es in zwei Schritten zum Laufen zu bringen:
Definieren einer Implementierung von
IEqualityComparer<T>
Übergeben Sie die Vergleicherinstanz als dritten Parameter an
Assert.True
method:Assert.True(expected, actual, new MyEqualityComparer());
Es gibt jedoch noch einen anderen besseren Weg, um mit dem FluentAssertions- Paket das gleiche Ergebnis zu erzielen . Damit können Sie Folgendes tun:
Interessanterweise
Assert.Equal()
schlägt das immer fehl, selbst wenn ich die Elemente von zwei Listen bestellt habe, um sie in derselben Reihenfolge zu erhalten.quelle