Clase base no comprobable que amplía PHPUnit_Framework_TestCase
unit-testing subclassing (1)
Resumen
¿Cómo puedo crear una clase base que amplíe PHPUnit_Framework_TestCase y usarla para subclasificar casos de prueba reales, sin que la clase base sea probada por PHPUnit?
Explicación adicional
Tengo una serie de casos de prueba relacionados para los cuales he creado una clase base que contiene algunas pruebas comunes que heredarán todos los casos de prueba:
BaseClass_TestCase.php:
class BaseClass_TestCase extends PHPUnit_Framework_TestCase {
function test_common() {
// Test that should be run for all derived test cases
}
}
MyTestCase1Test.php:
include ''BaseClass_TestCase.php'';
class MyTestCase1 extends BaseClass_TestCase {
function setUp() {
// Setting up
}
function test_this() {
// Test particular to MyTestCase1
}
}
MyTestCase2Test.php:
include ''BaseClass_TestCase.php'';
class MyTestCase2 extends BaseClass_TestCase {
function setUp() {
// Setting up
}
function test_this() {
// Test particular to MyTestCase2
}
}
Mi problema es que cuando intento ejecutar todas las pruebas en la carpeta, falla (sin resultados).
Tratando de depurar, he encontrado que el problema radica en que la clase base es en sí misma una subclase de PHPUnit_Framework_TestCase y, por lo tanto, PHPUnit también intentará ejecutar sus pruebas. (Hasta entonces, pensé ingenuamente que solo se probarían las clases definidas dentro de los archivos de prueba reales, los nombres de archivo que terminaban en Test.php).
La ejecución de la clase base como un caso de prueba fuera de contexto no funciona debido a los detalles en mi implementación específica.
¿Cómo puedo evitar que se pruebe la clase base y solo probar las clases derivadas?
Hazlo abstracto, PHPUnit debería ignorarlo.