Solución:
Utilice las sugerencias proporcionadas en el enlace. Como afirmaciones fluidas o crea tu propia afirmación que envuelva el Assert.True or Assert.False
que se quedaron con sus sobrecargas de mensajes. Se mencionó más abajo
Cita
Puede proporcionar mensajes a Assert.True y .False. Si simplemente no puede vivir sin mensajes (y se niega a usar una afirmación diferente), siempre puede recurrir a:
Assert.True(number == 2, "This is my message");
Cita:
Si realmente desea tener mensajes, puede agregar Fluent Assertions o tal vez xbehave a sus proyectos de prueba y usar su sintaxis. Fluent Assertions incluso arroja excepciones de xunit.net si encuentra su presencia.
Yo estaba teniendo el mismo problema. Tengo una prueba que extrae datos de dos API web y luego compara y afirma varias cosas sobre el contenido. Comencé a usar afirmaciones estándar de XUnit como:
Assert.Equal(HttpStatusCode.OK, response1.StatusCode);
Assert.Equal(HttpStatusCode.OK, response2.StatusCode);
Pero aunque esto da un mensaje útil de que se ha devuelto un 404, no queda claro en los registros de nuestro servidor de compilación / CI qué servicio causó el mensaje de error.
Terminé agregando mi propia afirmación para dar contexto:
public class MyEqualException : Xunit.Sdk.EqualException
{
public MyEqualException(object expected, object actual, string userMessage)
: base(expected, actual)
{
UserMessage = userMessage;
}
public override string Message => UserMessage + "n" + base.Message;
}
public static class AssertX
{
/// <summary>
/// Verifies that two objects are equal, using a default comparer.
/// </summary>
/// <typeparam name="T">The type of the objects to be compared</typeparam>
/// <param name="expected">The expected value</param>
/// <param name="actual">The value to be compared against</param>
/// <param name="userMessage">Message to show in the error</param>
/// <exception cref="MyEqualException">Thrown when the objects are not equal</exception>
public static void Equal<T>(T expected, T actual, string userMessage)
{
bool areEqual;
if (expected == null || actual == null)
{
// If either null, equal only if both null
areEqual = (expected == null && actual == null);
}
else
{
// expected is not null - so safe to call .Equals()
areEqual = expected.Equals(actual);
}
if (!areEqual)
{
throw new MyEqualException(expected, actual, userMessage);
}
}
}
Entonces puedo hacer las mismas afirmaciones que:
AssertX.Equal(HttpStatusCode.OK, response1.StatusCode, $"Fetching {Uri1}");
AssertX.Equal(HttpStatusCode.OK, response2.StatusCode, $"Fetching {Uri2}");
y el registro de errores da lo real, esperado y antepone mi mensaje sobre cuál webapi fue el culpable.
Me doy cuenta de que llego tarde para responder, pero pensé que esto podría ayudar a otros a buscar una solución práctica que no tenga tiempo para instalar / aprender otro marco de prueba solo para obtener información útil de las fallas de prueba.