Fact y Theory
En xUnit, Fact y Theory son dos atributos utilizados para definir métodos de prueba, pero tienen algunas diferencias clave en su uso.
Fact:
- Uso:
Factse utiliza para definir un método de prueba que no tiene parámetros. Cada método decorado conFactse ejecutará como una prueba independiente. - Ejemplo:
public class CalculadoraTests { [Fact] public void Sumar_DosNumeros_DeberiaSerCorrecto() { // Arrange, Act, Assert... } [Fact] public void Restar_DosNumeros_DeberiaSerCorrecto() { // Arrange, Act, Assert... } }
Theory:
- Uso:
Theoryse utiliza para definir métodos de prueba que pueden tener parámetros. Cada conjunto único de datos proporcionado a un método decorado conTheoryse considera como una instancia separada de la prueba. - Ejemplo:
public class CalculadoraTests { [Theory] [InlineData(2, 3, 5)] [InlineData(0, 0, 0)] [InlineData(-2, 2, 0)] public void Sumar_DosNumeros_DeberiaSerCorrecto(int a, int b, int resultadoEsperado) { // Arrange, Act, Assert... } }
En el ejemplo anterior, Sumar_DosNumeros_DeberiaSerCorrecto es un método de teorema porque toma parámetros a través de InlineData. Para cada conjunto de datos proporcionado (por cada conjunto de parámetros), xUnit ejecutará una instancia separada de la prueba. Esto es útil cuando deseas ejecutar la misma lógica de prueba con múltiples conjuntos de datos.
Ambos Fact y Theory se pueden utilizar según la necesidad de tus pruebas. Fact es más común cuando cada caso de prueba no tiene parámetros, mientras que Theory es más útil cuando deseas reutilizar la lógica de la prueba con varios conjuntos de datos.