Extensión de clase base no comprobable PHPUnit Framework TestCase


Resumen

¿Cómo puedo crear una clase base que extienda PHPUnit_Framework_TestCase y usarla para subclasificar casos de prueba reales, sin tener la clase base 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 para ser heredadas por 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 salida).

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, ingenuamente pensé que solo las clases definidas dentro de los archivos de prueba reales-nombres de archivo que terminan en Prueba.php - sería probado.)

Ejecutar 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 la clase base siendo probado, y solo probar las clases derivadas?

Author: jgivoni, 2012-02-24

1 answers

Hágalo abstracto, PHPUnit debería ignorarlo.

 34
Author: Mike B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-23 21:32:41