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);
}