Así que cada vez que encuentro excepciones inesperadas en PHPUnit (como no se puede insertar en db debido a una verificación de integridad) mis pruebas fallan y se produce un error sin ejecutar tearDownAfterClass()
función. Esto dejará mi base de datos en un estado desordenado, así que tengo que ir y limpiarla manualmente. ¿Hay alguna forma de garantizar que tearDownAfterClass()
siempre se ejecute?en PHPUnit cómo forzar que tearDownAfterClass() se ejecute en caso de excepciones inesperadas
Respuesta
PHPUnit llamará tearDownAfterClass
incluso cuando hay errores y fallos en los métodos de ensayo. Será no llámelo cuando setUpBeforeClass
arroja una excepción. Para asegurarse de que su base de datos esté limpia, mueva el código de limpieza a un nuevo método al que llame desde tearDownAfterClass
y la cláusula catch en setUpBeforeClass
.
function FooTest extends PHPUnit_Framework_TestCase
{
static function setUpBeforeClass() {
try {
... setup code that might fail ...
}
catch (Exception $e) {
self::cleanupDatabase();
throw $e; // so the tests will be skipped
}
}
static function tearDownAfterClass() {
self::cleanupDatabase();
}
static function cleanupDatabase() {
... clean ...
}
... test methods ...
}
Puede anular la función
protected function onNotSuccessfulTest(Exception $e)
con, por ejemplo;
$this->tearDownAfterClass();
throw $e;
** Advertencia: ** Esto llamará a 'tearDownAfterClass' para cada método de prueba que falle o errores, no una vez al final de toda la clase. –
-1 Tampoco resuelve el problema porque 'onNotSuccessfulTest' no se invoca cuando' setUpBeforeClass' arroja una excepción. –
- 1. Ejecute pruebas de PHPUnit en cierto orden
- 2. salida PHPUnit que causan excepciones Zend_Session
- 3. PHPUnit no detecta excepciones esperadas
- 4. ¿Cómo forzar a que mi programa C# Winforms se ejecute como administrador en cualquier computadora?
- 5. Cómo realizar pruebas unitarias Excepciones con PHPUnit?
- 6. ¿Cómo pruebo las múltiples excepciones con PHPUnit?
- 7. Cómo forzar una falla con phpunit
- 8. PHPUnit Cobertura y excepciones Código
- 9. ¿Cómo se logra que iPython se ejecute en Console2?
- 10. ¿Debería forzar excepciones para probarlas?
- 11. Haciendo que Mercurial se ejecute en Windows
- 12. cómo evitar que Sinatra se ejecute?
- 13. manejo de excepciones en el caso de Thread.sleep y esperar() en caso de Temas
- 14. Forzar excepciones de idioma inglés en .NET framework
- 15. ¿Cómo hacer que una aplicación se ejecute continuamente en Android?
- 16. Excluir que HttpModule se ejecute para contenido estático en IIS7
- 17. Forzar una secuencia de comandos de PowerShell para que se ejecute como administrador
- 18. PHPUnit afirman que se lanzó una excepción?
- 19. Excepciones de prueba de problemas con PHPUnit y Zend Framework
- 20. Evite que Javascript se ejecute dos veces
- 21. Evitar que se ejecute la tarea en segundo plano dispatch_after()
- 22. ¿Puedo hacer que @OnApplicationStart no se ejecute en las pruebas?
- 23. ¿Qué impide que MSTest se ejecute en paralelo?
- 24. Java hace que javax.swing.Timer se ejecute en un nuevo hilo?
- 25. En caso de que los servicios web generen excepciones O objetos de resultado
- 26. ¿Cómo hago que este complemento se ejecute solo en plataformas que no sean de Windows?
- 27. Ejecute solo una aplicación personalizada en Android, evite que se ejecute cualquier otra cosa
- 28. ¿Cómo se configura el proceso asp.net para que se ejecute en una cuenta de dominio?
- 29. Haciendo caso omiso de las advertencias de PHP en la PHPUnit
- 30. Cómo puedo hacer que el instalador se ejecute como administrador
¡Gracias! eso es exactamente lo que estaba buscando! –