unit test net dotnet asp .net xunit.net

test - Xunit.net: no se puede encontrar Assert.Fail y Assert.Pass o equivalente



unit test.net core (3)

La documentación incluye un cuadro de comparación que incluye esto:

Fail - alternativa de xUnit.net: Assert.True(false, "message")

(No muestra Assert.Pass , y yo nunca lo usé, pero sospecho que la alternativa es regresar de la prueba. Por supuesto, eso no ayuda si desea lanzarlo en una llamada de método anidado . Mi sospecha es que no se utiliza con mucha frecuencia en NUnit, por lo tanto, su ausencia en el cuadro de comparación.)

Solía ​​usar estos en NUnit y son realmente útiles. ¿Alguna idea de cómo hacer algo como eso?

EDITAR, MUESTRA DE CÓDIGO:

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()


Simplemente lance una excepción para satisfacer ambos requisitos (salir de un bucle anidado y una alternativa al método Assert.Fail faltante). El único problema es que no hay una excepción de base decente (p. Ej., TestException) para evitar advertencias sobre el uso de la clase de Excepción base, por lo que probablemente sea una buena opción algo más dirigido, como una InvalidOperationException.


Una alternativa a Assert.Fail("messsage") sugerida por xUnit docs

Alternativa xUnit.net: Assert.True (falso, "mensaje")

tiene un inconveniente - su salida es

message Expected: True Actual: False

Deshacerse de

Expected: True Actual: False

no llame a Assert.Fail("message") sino a Xunit.Sdk.XunitException .
Por ejemplo, cree un método auxiliar similar a este:

public static class MyAssert { public static void Fail(string message) => throw new Xunit.Sdk.XunitException(message); }