Ich habe in meiner Testsuite einen Test, der ungefähr so aussieht:
[Fact]
public void VerifySomeStuff()
{
var stuffCollection = GetSomeStuff();
Assert.Equal(1, stuffCollection.Count());
}
Dieser Test funktioniert wie erwartet, aber wenn ich ihn ausführe, gibt xUnit eine Warnung aus:
Warnung xUnit2013: Verwenden Sie Assert.Equal () nicht, um die Sammlungsgröße zu überprüfen.
In der Warnung wird jedoch keine Alternative vorgeschlagen, und eine Google-Suche führt mich zum Quellcode in xUnit, um zu testen, ob diese Warnung gedruckt wurde.
Wenn dies Assert.Equal()
nicht der richtige Weg ist, um die Länge einer Sammlung zu überprüfen, was ist das?
Zur Verdeutlichung: Mir ist klar, dass ich xUnit dazu bringen könnte, diese Warnung nicht auszugeben, indem ich z. B. eine Variable extrahiere oder Assert.True(stuff.Count() == 1)
stattdessen verwende. Letzteres ist nur hackig, und Ersteres scheint, wenn xUnit beispielsweise versucht, mehrere Iterationen von a zu vermeiden IEnumerable<T>
, dann ist dies der falsche Weg (da ich Compiler-Hinweise dazu separat bekomme, wenn es sich um ein Problem handelt) und xUnit selbst sollte die Eingabe niemals mehr als einmal auswerten müssen (tatsächlich wird sie wahrscheinlich unabhängig von der Variablenextraktion dieselbe Eingabe erhalten, da der Aufruf von C # -Funktionen funktioniert).
Ich bin also nicht nur daran interessiert, diese Warnung aus meiner Ausgabe zu entfernen. Eine Antwort auf meine Frage erklärt auch, warum diese Warnung überhaupt in der Bibliothek enthalten ist und warum jeder Ansatz, den ich stattdessen verwenden sollte, besser ist.
stuffCollection.Count()
in einer separaten Variablen speichern und diese an den Assert übergeben, erhalten Sie denselben Fehler?