xUnit – Pasar List<> a mi prueba está generando un error.
Estoy considerando usar xUnit para las pruebas. Me gustan algunas de sus características.
Estoy tratando de crear una lista<> y pasarla como parámetro de la prueba:
[Theory]
[InlineData( new List<IDispenseEntity>() )]
public void Test1(List<IDispenseEntity> data)
{
// Aquí va alguna prueba Assert.Equal(2, 2);
}
Obtengo el siguiente error:
Un argumento de atributo debe ser una expresión constante, una expresión typeof o una expresión de creación de matriz del tipo de parámetro del atributo
Quiero probar varias listas<> con diferentes combinaciones de elementos en la lista.
¿Cómo paso una List<> a mi prueba?
davy.ai
Para pasar un List<> a una prueba de xUnit, necesitas usar un enfoque ligeramente diferente. En lugar de usar [InlineData], puedes usar [MemberData] o [ClassData] para proporcionar tus datos de prueba. Aquí tienes un ejemplo:
En este ejemplo, creamos una clase estática llamada TestData que tiene un método llamado GetLists. Este método devuelve un IEnumerable<object[]>, donde cada object[] representa un conjunto de argumentos para probar el método. En este caso, cada conjunto de argumentos es un solo List.
Luego decoramos nuestro método de prueba con el atributo [Theory] y el atributo [MemberData]. El atributo [MemberData] le indica a xUnit que use el método TestData.GetLists como fuente de nuestros datos de prueba.
Cuando ejecutamos esta prueba, xUnit llamará al método TestData.GetLists y generará una ejecución de prueba para cada conjunto de argumentos devuelto por el método. En este caso, obtendremos tres ejecuciones de prueba: una para una lista vacía, una para una lista con un elemento y una para una lista con dos elementos.
Ten en cuenta que también necesitamos crear una clase que implemente la interfaz IDispenseEntity (en este ejemplo, simplemente la llamamos DispenseEntity) para tener algo que poner en nuestra lista de prueba.</object[]></object[]>