2009-10-28 16 views

Respuesta

10

Un ejemplo es más digno que 1000 palabras:

require_once 'PHPUnit/Framework.php'; 
require_once 'PHPUnit/TextUI/TestRunner.php'; 

class MyTestCase extends PHPUnit_Framework_TestCase { 

protected function setUp() { 
    parent::setUp(); 

} 

function testSimple() { 
    echo "horray !"; 
} 

protected function tearDown() { 

    parent::tearDown(); 
} 

static function main() { 

    $suite = new PHPUnit_Framework_TestSuite(__CLASS__); 
    PHPUnit_TextUI_TestRunner::run($suite); 
} 
} 

if (!defined('PHPUnit_MAIN_METHOD')) { 
    MyTestCase::main(); 
} 

la clave es:

  1. proporcionar un método principal en su caso_prueba

  2. prueba si la prueba se ejecuta directamente (v ia php MyTestCase.php) o por phpunit en sí. si se ejecuta directamente, simplemente inicie el testrunner.

sabe que puede depurar su caso de prueba.

+0

O MY GOD! SI SOLO me había topado con esta respuesta * hace años * ¡¡¡cuando empecé a buscar !! ¡He intentado tantas cosas pero esto solo * funciona *! ¡GRACIAS, usuario anónimo! ¡¡Gracias!! –

+0

Eres genio. – fracz

2

Para otros que se preguntan si hay instrucciones sencillas para configurar Eclipse/Aptana con PHPUnit, aquí es un sitio web que he encontrado:

http://pkp.sfu.ca/wiki/index.php/Configure_Eclipse_for_PHPUnit

Lo que tiene que hacer básicamente es:

  1. Asegúrate de que tus bibliotecas PEAR estén en la ruta de inclusión de tu proyecto. Haga clic con el botón derecho en el proyecto en la ventana del navegador y haga clic en Propiedades. Verás que hay una sección para PHP Include Path (o PHP Build Path en Aptana para mi versión), ábrela y agrega tus bibliotecas PEAR a tu ruta include/build para que Eclipse sepa sobre phpunit.
  2. Cree una configuración de depuración que ejecute el archivo phpunit.php (es posible que necesite agregar la extensión .php al archivo si se está ejecutando con un shebang, como es el caso en Mac OS X). Entonces, con el archivo phpunit.php como la secuencia de comandos "Iniciar acción", configure "Argumentos de script PHP" para que phpunit.php ejecute el archivo de prueba PHPUnit que le interesa. Agregue cualquier otro argumento de línea de comando, a su medida. p.ej. --verbose es una buena opción. También puede usar variables como $ {resource_loc} para que Eclipse lo reemplace con el archivo actual, por ejemplo.
  3. ¡Ejecute su configuración de depuración y disfrute de la depuración!

No necesita modificar sus archivos de prueba ni nada, funcionarán de la caja.

2

Finalmente, ejecuto la depuración en paralelo a la línea de comandos en eclipse 3.4. Depuración corro como "la página web de PHP", mi código mínimo

require_once 'PHPUnit/Framework.php'; 
require_once 'PHPUnit/TextUI/TestRunner.php'; 
class XTest extends PHPUnit_Framework_TestCase{ 
    public function testX(){ 
     //... 
    } 
} 
if (!defined('PHPUnit_MAIN_METHOD')) { 
    header('Content-type:text/plain; charset=utf-8'); 
    PHPUnit_TextUI_TestRunner::run(new PHPUnit_Framework_TestSuite('XTest')); 
} 
5

Podemos resolver este problema con nuestro plugin de Eclipse MakeGood.

MakeGood proporciona una manera simple de depurar sus pruebas. Solo ejecuta una prueba en modo de depuración. Para obtener más información, consulte the user guide.

Debugging a test

+0

Me encanta este complemento. Después de probar varias opciones, resultó ser lo mejor para UI, fácil configuración y estabilidad. –

0

He confirmado mediante el establecimiento de un punto de interrupción en mi setup() método dentro de mi unidad de prueba siguiendo las instrucciones aquí:

How to Debug Your PHP Unit Tests in Eclipse

Se trata de copiar el directorio/usr/bin/phpunit a su proyecto (para que sea accesible a través de las GUI de eclipse) y agregue la extensión .php. A partir de ahí, vaya a las configuraciones de depuración y configure el archivo PHP en ese archivo phpunit.php.

El siguiente paso importante funcionó muy bien para mí, porque estoy usando Yii, que me proporcionó un archivo Bootstrap.php. Pon algo así en tu args:

--bootstrap=${workspace_loc}/my-project/trunk/protected/tests/bootstrap.php ${workspace_loc}/my-project/trunk/protected/tests/unit/SomeClassToTest.php 
+0

el enlace está roto a partir de 2015-12-27 –

Cuestiones relacionadas