C# Language
Contratos de Código y Afirmaciones
Buscar..
Las afirmaciones para verificar la lógica siempre deben ser ciertas
Las afirmaciones se utilizan no para realizar pruebas de los parámetros de entrada, sino para verificar que el flujo del programa sea correcto, es decir, que puede hacer ciertas suposiciones acerca de su código en un momento determinado. En otras palabras: una prueba realizada con Debug.Assert
siempre debe asumir que el valor probado es true
.
Debug.Assert solo se ejecuta en construcciones DEBUG; Se filtra de las versiones RELEASE. Debe considerarse una herramienta de depuración además de las pruebas unitarias y no como un reemplazo de los contratos de código o los métodos de validación de entrada.
Por ejemplo, esta es una buena afirmación:
var systemData = RetrieveSystemConfiguration();
Debug.Assert(systemData != null);
Aquí afirmar es una buena opción porque podemos suponer que RetrieveSystemConfiguration () devolverá un valor válido y nunca devolverá el valor nulo.
Aquí hay otro buen ejemplo:
UserData user = RetrieveUserData();
Debug.Assert(user != null);
Debug.Assert(user.Age > 0);
int year = DateTime.Today.Year - user.Age;
Primero, podemos asumir que RetrieveUserData () devolverá un valor válido. Luego, antes de usar la propiedad Age, verificamos la suposición (que siempre debería ser cierta) de que la edad del usuario es estrictamente positiva.
Este es un mal ejemplo de aseverar:
string input = Console.ReadLine();
int age = Convert.ToInt32(input);
Debug.Assert(age > 16);
Console.WriteLine("Great, you are over 16");
Assert no es para validación de entrada porque es incorrecto suponer que esta aserción siempre será verdadera. Debe utilizar métodos de validación de entrada para eso. En el caso anterior, también debe verificar que el valor de entrada sea un número en primer lugar.