Es bastante común toparnos con casos en los que debemos asegurarnos que el mismo test se cumpla para varias condiciones. Imagínense el desarrollo de una calculadora o mucho mejor, el de alguna pieza de lógica de negocio dependiente de data. En vez de escribir ciclos dentro de nuestro test o peor aún, escribir varios test para el caso, en XUnit.NET tenemos el apoyo de las “Theory” que son test que estan fuertemente ligados a los datos.
Los datos son pasados como parámetros del test y el origen de los datos depende de nuestro proveedor de datos seleccionado. En XUnit.NET Extensions tenemos de “cajita” varios proveedores de datos que podemos usar:
- InlineDataAttribute, los datos se presentan en línea en cada atributo
- ClassDataAttribute, los datos son proporcionados por una clase que implementa IEnumerable<T>
- PropertyDataAttribute, los datos son entregados por la propiedad de una clase que retorna IEnumerable<T>
- SqlServerDataAttribute, los datos vienen de una consulta de una base de datos de SQL Server
- OleDbDataAttribute, los datos tienen como origen una consulta de un proveedor OleDb
- ExcelDataAttribute, los datos tienen como origen una hoja de cálculo de Excel.
El uso de Theory y DataAttribute proporciona una agilidad increíble al probar ciertas condiciones que antes requeririan mucha más pericia. Depende de nosotros sacarle provecho
[Theory]
[InlineData(1, 2, 3)]
[InlineData(4, 5, 9)]
public void It_can_use_correctly_the_data_attribute(int a, int b, int result)
{
Assert.Equal(result, (a + b));
}
[Theory, ExcelData("myTestData.xls", "SELECT a, b, result FROM Data")]
public void It_can_use_correctly_the_data_from_an_excel_file(int a, int b, int result)
{
Assert.Equal(result, (a + b));
}
Bien, hasta aquí llegamos con las Extensiones de XUnit.NET, la próxima entrega veremos como extender a nuestro antojo XUnit.NET
