Primero, introduzcamos algunos conocimientos sobre las afirmaciones. Para programadores experimentados, vaya a la sección Evolución de las afirmaciones a continuación.
En las pruebas unitarias, cuando el programador predice que cuando el programa se ejecuta en un determinado nodo, necesita determinar que se deben cumplir ciertas condiciones lógicas para poder realizar parte de la siguiente lógica de negocios. Si no se cumple, el programa "informará un error" o incluso "fallará". Por ejemplo, un programa se encarga de "transferir dinero". Antes de iniciar realmente la operación de transferencia, es necesario "afirmar" que la cuenta es una cuenta "legal", por ejemplo, que la cuenta no está vacía. Cuando sucede algo, los desarrolladores de programas pueden conocer el problema inmediatamente y depurarlo, en lugar de esperar hasta que se entregue a los usuarios. De hecho, esta característica es una de las piedras angulares de TDD (Test Driven Development).
Inicialmente, algunos marcos de pruebas unitarias (como JUnit) proporcionaban declaraciones de aserción para garantizar que una relación lógica en algún lugar del programa debía ser verdadera. Si no es cierto, la prueba unitaria falla. A continuación se muestra un ejemplo. Si el programa devuelve falso cuando llega a esta línea, arrojará un error (como se muestra en la Figura 1 a continuación) y dejará de ejecutarse. Los desarrolladores pueden comprobar por qué ocurre este problema. Muy simple y tosco.
Además de ser simple, la aserción anterior tiene otro problema, es decir, el mensaje de error que se muestra cuando se activa la aserción no es muy amigable. Como se muestra en la Figura 1 anterior, simplemente sabía que algo andaba mal, pero no tenía mucha información útil. Por ejemplo, sería mejor mostrar los valores X e Y para poder entender más rápidamente por qué algo salió mal. Más tarde, apareció una versión mejorada del marco de pruebas unitarias que admitía afirmaciones, proporcionaba una serie de declaraciones de "aserciones" avanzadas, agregaba algunas interfaces de programa más amigables y también proporcionaba mensajes de error más amigables. Por ejemplo, el siguiente ejemplo utiliza dos declaraciones de aserción separadas.
Los resultados de la ejecución se muestran en la Figura 2 a continuación. Puede ver que este resultado de error en comparación con la "Edad de Piedra" anterior ya contiene mucha información útil, como saber que la afirmación falló y mostrar los valores esperados y reales.
Sin embargo, el método anterior tiene una desventaja, que es una gran cantidad de métodos de aserción preestablecidos (como juzgar un método como igual, juzgar un método como desigual, etc.) para admitir varios escenarios. Entonces surgió una nueva solución, cuya estrella es el framework de Hamcrest (en realidad esta palabra es un juego de palabras llamado angrama, que consiste en cambiar el orden de las letras de una palabra original. Este Hamcrest es una transformación de Matchers). Matcher lo utiliza en la combinación afirmaresa.
Esto tiene varias ventajas.
Dicho todo esto, ¿crees que todavía queda mucho por profundizar en una afirmación aparentemente simple y que se utiliza a menudo en la vida diaria? Esto es sólo para atraer el jade. Si tiene alguna idea o sugerencia, utilice los métodos siguientes.