La afirmación está allí para confirmar que una función provocaría la terminación del programa si se ejecutara en el proceso actual (los detalles explican que la prueba de muerte se invoca desde un subproceso que permite que las pruebas continúen a pesar del fallecimiento). Esto es útil porque algunos códigos pueden garantizar la terminación del programa/aborto en caso de falla (por ejemplo, si hubo un error irrecuperable), y las pruebas unitarias deben confirmar que una función se adhiere a su comportamiento documentado, independientemente de lo que pueda ser.
La descripción en la página wiki realmente lo explica mejor:
En muchas aplicaciones, hay afirmaciones que pueden causar fallos en la aplicación si no se cumple la condición. Estas comprobaciones de cordura, que aseguran que el programa se encuentra en buen estado, fallarán en el momento más temprano posible después de que se haya dañado algún estado del programa. Si la afirmación comprueba el estado incorrecto, entonces el programa puede proceder en un estado erróneo, lo que podría conducir a daños en la memoria, agujeros de seguridad o algo peor. Por lo tanto, es de vital importancia comprobar que dichas afirmaciones funcionan como se espera.
La parte que me preocupa es la ganancia de usar Google Death Tests en 'ASSERT()' o 'assert()'. – Wernight
@Wernight: si usa 'assert' y falla, el proceso se detiene y, por lo tanto, la prueba de la unidad se detiene, no se generan informes, etc. Al iniciar la prueba en otro proceso, es posible controlar que se detuvo como se esperaba. informe si no lo hizo, etc ... –
@Matthieu: Reemplazando en la aplicación 'assert()' tradicional por 'ASSERT_EXIT()' de Google Test, la versión funcionará igual, pero durante la ejecución de la prueba las aserciones se pueden verificar correctamente . – Wernight