2008-09-16 15 views
12

Estoy intentando ejecutar un SeleniumTestCase con phpunit pero no puedo ejecutarlo con el script phpunit.bat.Cómo resuelvo este error: "Clase PHPUnit_Extensions_SeleniumTestCase no se pudo encontrar"

Mi objetivo es utilizar phpunit con Selenium RC en CruiseControl & phpUnderControl. Esto es lo que se ve como la prueba:

require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; 

class WebTest extends PHPUnit_Extensions_SeleniumTestCase 
{ 
    protected function setUp() 
    { 
     $this->setBrowser('*firefox'); 
     $this->setBrowserUrl('http://www.example.com/'); 
    } 

    public function testTitle() 
    { 
     $this->open('http://www.example.com/'); 
     $this->assertTitleEquals('Example Web Page'); 
    } 
} 

también conseguí PERA en include_path y PHPUnit instalado con la extensión de selenio. Los instalé con el instalador de peras, así que supongo que ese no es el problema.

cualquier ayuda sería muy apreciada.

Gracias, Remy

+0

por alguna razón no encuentro PHPUnit_Extensions_SeleniumTestCase en /PEAR/PHPUnit/Extensions/SeleniumTestCase.php, ¿no se supone que está ahí? – farinspace

Respuesta

1

Eche un vistazo a uno de los comentarios en la entrada require_once en el manual de php ..

http://ie.php.net/manual/en/function.require-once.php#62838

"require_once (y include_once para que importa) es lenta

por otra parte, si usted planea usar pruebas unitarias y objetos simulados (es decir, incluyendo clases simuladas antes de los reales se incluyen en la clase que desea probar), no va a funcionar como require() carga un archivo y no una clase."

1

acabo modificado el nombre de mi prueba estaba en que "WebTest.php" (el nombre de la clase que contiene) y la prueba se ejecuta bien ahora.

0

bien cuando uso de comandos en línea: si lauching prueba de PHPUnit dir tengo el error al whent lanzarlo desde dir prueba que havne't el error ...

pero todavía tengo no cualquier acceso a servidor de selenio ... tendré que lanzarlo antes o no.

Si Sí, es extraño que havne't para especificar cualquier identificador para PHPUnit ...

6

Este es el trato:

Si usted tiene una "clase PHPUnit_Extensions_SeleniumTestCase no se pudo encontrar en (archivo caso_prueba nombre)" problema, que tiene que hacer las dos cosas siguientes:

1. Cambie el nombre del archivo del caso de prueba para el nombre de la clase que contiene 2. Debería ejecutar phpunit desde la carpeta con sus pruebas.

Esto debería solucionar su problema.

Andrew

1

No suponga que la instalación pera se produjo sin problemas.

había instalado PHPUnit a través de pera pero a pesar de lo que dice la instalación ha ido bien cuando miré dentro de la carpeta, que había todos estos archivos empezando por .tmp, por ejemplo PHPUnit/util/.tmpErrorHandler.php tan naturalmente cuando me encontré con una probar por primera vez me dio el mismo error que el anterior. Después de comprobar que, efectivamente, el archivo no se ha instalado allí un manual de PHPUnit a la misma carpeta que la pera y por desgracia, todo estaba bien. Estoy en Mac/leopard.

Sobre Selenim RC no se olvide de iniciarlo ejecutando en el terminal java-jar /path/to/file/selenium-server.jar

1

me encontré con que la siguiente muestra de PHPUnit tutorial fue mientras trabajaba el mismo error apareció en la prueba que había escrito. La solución fue una sorpresa. Asegúrese de que su clase esté dentro de un bloque <?php .. ?> y no un bloque <? .. ?> en el script.

<?php 
require_once 'PHPUnit/Framework.php'; 

class StackTest extends PHPUnit_Framework_TestCase 
{ 
    public function testPushAndPop() 
    { 
     $stack = array(); 
     $this->assertEquals(0, count($stack)); 

     array_push($stack, 'foo'); 
     $this->assertEquals('foo', $stack[count($stack)-1]); 
     $this->assertEquals(1, count($stack)); 

     $this->assertEquals('foo', array_pop($stack)); 
     $this->assertEquals(0, count($stack)); 
    } 
} 
?> 
+2

Además, pruebe el indicador --syntax-check para PHPUnit en la línea de comando. De lo contrario, PHPUnit puede ignorar silenciosamente los errores en su programa. – CruiZen

16

espero que esta sea una respuesta más definitiva que las dadas aquí (que no me resolvió el problema). Si usted está recibiendo este error, compruebe su carpeta de PEAR y ver si el archivo "SeleniumTestCase.php" es en realidad existe:

/PEAR/PHPUnit/Extensions/SeleniumTestCase.php 

Si NO lo está, lo más fácil de hacer es desinstalar y reinstalar PHPUnit usando PEAR ...

pear uninstall phpunit/PHPUnit 

pear uninstall phpunit/PHPUnit_Selenium 

pear install phpunit/PHPUnit 

Después de hacer lo anterior y haciendo sólo la sola instalación, PHPUnit_Selenium también fue automático instalado, no estoy seguro de si esto es típico, por lo que algunos podrían tener que hacer ...

pear install phpunit/PHPUnit_Selenium 

Ver también http://www.phpunit.de/manual/3.5/en/installation.html de información del canal PEAR si es necesario ...

+0

Esto es lo que necesitaba hacer para arreglar esto, gracias farinspace. – Toby

+0

que desinstaló phpunit pero ahora dice que no hay versiones disponibles ...great –

+0

Debe marcarse como respuesta correcta. – schmunk

1

Aquí es cómo resuelto este problema:

  1. Asegúrese de que la extensión de rizo para PHP está instalado, por ejemplo, para ubuntu sudo apt-get install php5-curl
  2. Enter sudo pear install phpunit/PHPUnit_Selenium

Después de que usted debe tener instalado el archivo que falta

Codificación feliz ...

0

Cuando falla, no siempre imprime los mensajes de error más detallados.

Recuerde siempre comenzar Selenium también antes de ejecutar la prueba.

java-jar selenio-server-standalone-2.39.0.jar

Este es un ejemplo de código que estaba trabajando para mí. http://www.siteconsortium.com/h/p1.php?id=php002. Obviamente, hay muchas maneras diferentes de escribir el conjunto de pruebas y lanzar el caso de prueba, pero utilicé el set_class_path para deshacerme de los problemas de clase al principio.

1

Probar:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase 

Puede ser cuestión de espacio de nombres, como lo fue para mí.

+0

Esta solución funcionó para mí también, gracias muchísimo. –

Cuestiones relacionadas