Soy nuevo en TDD y xUnit, así que quiero probar mi método que se parece a:
List<T> DeleteElements<T>(this List<T> a, List<T> b);
¿Existe algún método Assert que pueda utilizar? Creo que algo como esto estaría bien
List<int> values = new List<int>() { 1, 2, 3 };
List<int> expected = new List<int>() { 1 };
List<int> actual = values.DeleteElements(new List<int>() { 2, 3 });
Assert.Exact(expected, actual);
¿Hay algo como esto?
En la versión actual de XUnit (1.5) puede usar
El método anterior hará una comparación elemento por elemento de las dos listas. No estoy seguro de si esto funciona para alguna versión anterior.
fuente
Con xUnit, si desea seleccionar las propiedades de cada elemento para probar, puede usar Assert.Collection.
Esto prueba el recuento esperado y garantiza que se verifique cada acción.
fuente
Recientemente, estaba usando paquetes
xUnit 2.4.0
yMoq 4.10.1
en mi aplicación asp.net core 2.2.En mi caso, logré que funcionara con un proceso de dos pasos:
Definiendo una implementación de
IEqualityComparer<T>
Pase la instancia del comparador como tercer parámetro al
Assert.True
método:Assert.True(expected, actual, new MyEqualityComparer());
Pero hay otra forma más agradable de obtener el mismo resultado usando el paquete FluentAssertions . Te permite hacer lo siguiente:
Curiosamente, eso
Assert.Equal()
siempre falla incluso cuando ordené los elementos de dos listas para obtenerlos en el mismo orden.fuente