Ich habe diese in NUnit verwendet und sie sind wirklich nützlich. Irgendeine Idee, wie man so etwas macht?
BEARBEITEN, CODE-BEISPIEL:
bool condition = false;//would be nice not to have this
observable.Subscribe(_ =>
{
if (real test)
condition= true;//Assert.Pass()
});
StartObservable();
Assert.True(condition);//Assert.Fail()
throw new Xunit.Sdk.XunitException(message);
loswerdenExpected: True Actual: False
. Schauen Sie sich meine Antwort für weitere Details an.Eine Alternative zu
Assert.Fail("messsage")
den von xUnit-Dokumenten vorgeschlagenenhat einen Nachteil - seine Ausgabe ist
message Expected: True Actual: False
Loswerden
nenne stattdessen nicht
Assert.True(false, "message")
werfenXunit.Sdk.XunitException
.Erstellen Sie beispielsweise eine ähnliche Hilfsmethode:
public static class MyAssert { public static void Fail(string message) => throw new Xunit.Sdk.XunitException(message); }
quelle
Assert.Fail
Problemumgehung durchführen müssen, um die Funktionalität in mstest nachzuahmen.Lösen Sie einfach eine Ausnahme aus, um beide Anforderungen zu erfüllen (Verlassen einer verschachtelten Schleife und eine Alternative zur fehlenden Assert.Fail-Methode). Das einzige Problem ist, dass es keine anständige Basisausnahme (z. B. TestException) gibt, die verwendet werden kann, um Warnungen vor der Verwendung der Basisausnahmeklasse zu vermeiden. Daher ist wahrscheinlich eine gezieltere Ausnahme wie eine InvalidOperationException eine gute Wahl.
quelle
Xunit.Sdk.XunitException
. Wahrscheinlich ist es auch in früheren Versionen verfügbar - ich habe es nicht überprüft. Schauen Sie sich meine Antwort für weitere Details an.