unit-testing selenium phpunit cruisecontrol phpundercontrol

unit testing - ¿Cómo resuelvo este error? "Class PHPUnit_Extensions_SeleniumTestCase no se pudo encontrar"



unit-testing cruisecontrol (10)

Estoy intentando ejecutar un SeleniumTestCase con phpunit pero no puedo ejecutarlo con el script phpunit.bat.

Mi objetivo es usar phpunit con Selenium RC en CruiseControl y phpUnderControl. Así es como se ve 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 obtuve PEAR en include_path y PHPUnit instalado con la extensión de Selenium. Los instalé con el instalador de peras, así que supongo que ese no es el problema.

Cualquier ayuda sería muy apreciada.

Gracias, Remy


Acabo de cambiar el nombre del archivo en el que estaba mi prueba a "WebTest.php" (el nombre de la clase que contiene) y la prueba funciona bien ahora.


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 eso importa) es lento

Además, si planea usar pruebas unitarias y objetos simulados (es decir, incluyendo clases simuladas antes de que las reales estén incluidas en la clase que desea probar), no funcionará ya que require () carga un archivo y no una clase. "


Bueno, cuando uso el comando en línea: si lauching test de PhPunit dir tengo el error mientras lo lancé desde el directorio de prueba, no he tenido el error ...

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

Si es así, es extraño que no hayamos especificado ningún identificador para PhPUnit ...


Aquí está el trato:

Si tiene un problema de "clase PHPUnit_Extensions_SeleniumTestCase no se puede encontrar en (nombre de archivo de prueba)", debe hacer las dos cosas siguientes:

1. Cambie el nombre del archivo del caso de prueba al nombre de la clase que contiene 2. Debe iniciar phpunit desde la carpeta con sus pruebas.

Esto debería solucionar tu problema.

Andrés


No suponga que la instalación pera ocurrió sin problemas.

Había instalado phpunit a través de pera, pero a pesar de que decía que la instalación funcionaba bien cuando miraba dentro de la carpeta, tenía todos estos archivos comenzando con .tmp, por ejemplo, PHPUnit / Util / .tmpErrorHandler.php, así que naturalmente cuando ejecuté una prueba para la primera tiempo me dio el mismo error que el anterior. Después de comprobar que efectivamente el archivo no estaba allí hice una instalación manual de PHPUnit en la misma carpeta que pera y, por desgracia, todo estaba bien. Estoy en Mac / leopard.

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


Descubrí que el siguiente ejemplo del tutorial de PHPUnit funcionaba mientras que el mismo error aparecía 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 <? .. ?> <? .. ?> bloquear 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)); } } ?>


con suerte, esta es una respuesta más definitiva que las que se dan aquí (que no me resolvió el problema). Si obtiene este error, revise su carpeta PEAR y vea si el archivo "SeleniumTestCase.php" está realmente allí:

/PEAR/PHPUnit/Extensions/SeleniumTestCase.php

Si no lo es, lo más fácil 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 hacer solo la instalación única, PHPUnit_Selenium también se instaló automáticamente, no estoy seguro de si esto es típico, por lo que algunos podrían tener que hacer ...

pear install phpunit/PHPUnit_Selenium

También vea http://www.phpunit.de/manual/3.5/en/installation.html para obtener información sobre el canal PEAR si es necesario ...


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 selenium-server-standalone-2.39.0.jar

Aquí hay un ejemplo de código que funcionaba 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.


Tratar:

class WebTest extends /PHPUnit_Extensions_Selenium2TestCase

Puede ser un problema de espacio de nombres, como lo fue para mí.


Aquí es cómo resolví este problema:

  1. Asegúrese de que la extensión curl para php esté instalada, por ejemplo, para ubuntu sudo apt-get install php5-curl
  2. Ingrese sudo pear install phpunit/PHPUnit_Selenium

Después de eso, debe tener el archivo que falta instalado

Feliz codificación ...