2011-06-22 9 views
6

He creado mis propios estándares de reglas codesniffer. Están funcionando bien. Ahora quiero probar las reglas de codesniffer usando PHP UnitTest. PhpCodesniffer ya tiene su marco para el caso de prueba PHPUnit.Cómo crear PHP-UnitTest Case para estándares PHP_Codesniffer? `

Así que usando que he ampliado su clase de prueba AbstractSniffUnitTest y la unidad en la ubicación Standards/TestRules/Tests/Function/FunctionUnitTest.php y el guión sobre el que se va a probar mantenido en Standards/TestRules/Tests/Function/FunctionUnitTest.inc.

Pero cuando voy a ejecutar el script con el comando phpunit PEAR\PHP\tests\AllTests.php, aparece el siguiente error.

PHPUnit 3.5.14 by Sebastian Bergmann. 

......................................F 

Time: 6 seconds, Memory: 10.00Mb 

There was 1 failure: 

1) TestRules_Tests_Function_FunctionUnitTest::getErrorList 
An unexpected exception has been caught: Source file C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc does not exist 

C:\Program Files\PHP\PEAR\PHP\tests\Standards\AbstractSniffUnitTest.php:138 
C:\Program Files\PHP\PEAR\PHP\tests\TestSuite.php:48 

FAILURES! 
Tests: 39, Assertions: 146, Failures: 1. 

Warning: Deprecated PHPUnit features are being used 2 times! 
Use --verbose for more information. 

Proporciona el archivo de error FunctionUnitTest.inc no encontrado en la ubicación determinada. He dado permiso completo a la carpeta, también verifico la ruta y la ubicación del archivo, pero da el mismo error. Lo probé en la máquina de Linux también, pero da el mismo error.

¿Es un problema de mi código o un problema del marco de la unidad codesniffertest?

+0

Pruebe el interruptor '--verbose' y añada la salida extendida. – hakre

Respuesta

1

Veo un espacio cerca de ii nc - asegúrese de que si se trata de un error ortográfico y lo corrija, debería funcionar. Aparte de esto, no veo ningún problema.

Cambio:

C:/Archivos de programa/PHP/PEAR/PHP/CodeSniffer/Normas/TestRules/Pruebas/Función/FunctionUnitTest.i nc

Para

C:/Archivos de programa/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc

+0

He reformateado la pregunta para el póster, y no había espacio en 'inc'. Fue un final de línea que el navegador se convierte en un espacio. Sospecho que fue causado al seleccionar el texto en la consola. –

+0

@David Espero que sí, pero me pregunto qué podría causar este problema, ya que ambos archivos están en la misma ubicación y 'TestRules/Tests/Function/FunctionUnitTest.php' se está procesando si ese es el caso, entonces debería recoger el archivo 'TestRules/Tests/Function/FunctionUnitTest.inc'. –

+0

Gracias a todos por sus comentarios. ubicación del archivo real es C:/Archivos de programa/PHP/PEAR/PHP/CodeSniffer/Normas/TestRules/Pruebas/Función/FunctionUnitTest.inc También me pregunto por qué este problema se producen como carpeta tiene todos los permisos de lectura/escritura . – Gaurav

1

¿Están sus archivos en el directorio de nivel superior tests o CodeSniffer? Tenga en cuenta que el caso de prueba abstracta que está extendiéndose está en tests

C:\Program Files\PHP\PEAR\PHP\tests\Standards\AbstractSniffUnitTest.php 

pero está tratando de incluir el archivo de CodeSniffer:

C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc 

Intente mover sus dos archivos a otro directorio.

+0

estructura de directorios es la siguiente -Codesniffer --Standard --- ---- TestRules Sniff/Función/FunctionSniff.php ---- Pruebas/Función/FunctionUnitTest.php /-FunctionUnitTest.inc - tests --Standards /AbstarctSniffUnitTest.php /AllSniffs.php ¿Hay algún problema con la estructura del directorio? He seguido la misma convención que PHP-Codesniffer UnitTest. Cualquier puntero? – Gaurav

+0

Si siguió el patrón establecido por las propias pruebas de CodeSniffer, esperaría que funcionara. Comenzaría por abrir la clase que intenta incluir su archivo y ver dónde espera que esté el archivo. Es hora de arremangarse y ensuciarse las manos. :) –

0

Parece que tiene un problema de ruta en Windows. Probé los casos de prueba en Linux, funciona bien. Cuando revisé el código actual, parece que hay un mapeo de archivos desde el archivo de caso de prueba hasta el archivo de oler. Pero en la ventana, después de que se mapee el archivo, la ruta del archivo contiene la mezcla de & hacia atrás. Sin embargo, los códigos no permiten que esto suceda. Por eso está devolviendo ese "error de archivo no encontrado". Los casos de prueba se ejecutan bien en Linux.