usar reconoce interno externo como comando php unit-testing phpunit

reconoce - phpunit laravel



PHPUnit-''No se ejecutaron pruebas'' cuando se usa el archivo de configuraciĆ³n (16)

¿Ha agregado una suite de prueba a su archivo phpunit.xml?

<phpunit> <testsuite name="app1" > <directory>./</directory> </testsuite> </phpunit>

Puede agregar varios directorios allí.

El problema

Para mejorar mi calidad de código, he decidido tratar de aprender cómo probar mi código usando Unit Testing en lugar de mis soluciones de prueba mediocres en el mejor de los casos.

Decidí instalar PHPUnit usando Composer para una biblioteca personal que me permite lograr funciones comunes de base de datos. Al principio no tenía un archivo de configuración para PHPUnit y cuando ejecuté comandos como:

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest

Tenga en cuenta que este es un comando de terminal, por lo que no .php extensión .php . El GeneralStringFunctionsTest mencionado anteriormente es en realidad un archivo GeneralStringFunctionsTest.php .

El resultado es lo que esperaba:

Tiempo: 31 ms, Memoria: 2.75Mb

OK (1 prueba, 1 afirmación)

Luego intenté usar un archivo de configuración para cargar automáticamente el conjunto de pruebas en lugar de tener que escribir manualmente el archivo cada vez. phpunit.xml un archivo llamado phpunit.xml en mi directorio raíz e phpunit.xml lo siguiente en el archivo: http://pastebin.com/0j0L4WBD :

<?xml version = "1.0" encoding="UTF-8" ?> <phpunit> <testsuites> <testsuite name="Tests"> <directory>tests</directory> </testsuite> </testsuites> </phpunit>

Ahora, cuando ejecuto el comando:

phpunit

Me sale el siguiente resultado:

PHPUnit 4.5.0 por Sebastian Bergmann y colaboradores.

Configuración leída de /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml

Tiempo: 16 ms, Memoria: 1.50Mb

No hay pruebas ejecutadas!

En caso de que sea útil, mi estructura de directorios es la siguiente:
src - Directorio de nivel superior (con todo mi código fuente)
tests - Directorio de nivel superior (con todas mis pruebas, estructuradas de la misma manera que mi carpeta src )
proveedor: archivos de terceros de Composer

También tengo el compositor json y el archivo de bloqueo, así como el archivo phpunit xml en el nivel superior como archivos.

Cosas que he probado

  • Cambiar el directorio en phpunit.xml a tests/GeneralStringFunctions
  • Cambiar el directorio en phpunit.xml a ./tests
  • Mover el archivo phpunit.xml al directorio de tests y luego cambiar el directorio a ./ lugar de tests .
  • Agregar un atributo de sufijo a la etiqueta del directorio en phpunit.xml para especificar "Pruebas" como sufijo explícito.

En Windows use el siguiente comando en la terminal

./vendor/bin/phpunit

eso es si el comando

phpunit

devuelve "¡No se ejecutaron pruebas!"

mientras que en Mac

./vendor/bin/phpunit

Espero eso ayude.


Esto es muy tarde, pero espero que ayude a alguien.

Obtuve mis pruebas para ejecutar utilizando una referencia absoluta. estructura de carpetas [project / tests / test.php]

mi línea de directorio se veía así ./tests/test.php


La mía fue un poco divertida.

Cuando usé php artisan make:test , accidentalmente puse .php como ProductRewardPointController.php que creó ProductRewardPointController.php.php y phpunit simplemente lo ignoró.

Solo elimino el .php extra y las cosas vuelven a la normalidad


Me arranqué el cabello durante 10 minutos antes de decidir usar --debug (una buena forma de hacerlo) para descubrir el simple hecho de que el nombre del archivo no respetaba la convención de nombres , tenía una "s" extra al final .

incorrecto

/** test */ function a_thread_can_be_deleted() { ... }

derecho

/** @test */ function a_thread_can_be_deleted() { ... }

espero que esta nota pueda ayudar a alguien


Me doy cuenta de que esto es muy viejo, pero también me pasó a mí. Espero que esto ayude a alguien.

Mi problema fue que olvidé el símbolo ''@'' en / ** @test * /

INCORRECTO:

CreateAdminTests

DERECHO:

CreateAdminTest


Para mí, usando phpunit --debug me mostró qué prueba no se estaba ejecutando, por dentro, tenía

$this->visit(''/'') ->see(''Laravel'');

y creo que debido a que el directorio estaba protegido con autenticación .htaccess, no pudo acceder a visitar la página

La solución para mí fue realizar esta prueba (o muy probablemente eliminar la autenticación .htaccess)


Por lo que vale (llegar tarde), me encontré con esto recientemente mientras estaba haciendo un nuevo proyecto de Laravel 5.1 para un sitio web simple. Intenté depurarlo y me confundí cuando intenté:

php artisan make:test homeTest

(que tiene una prueba predeterminada que simplemente afirma que true es verdadero)

y vi la salida

No tests executed!

El problema que terminé siendo para mí estaba relacionado con mi instalación de PHP: "phpunit" se registró globalmente y se configuró de manera diferente, mientras que el phpunit que vino con la instalación de Laravel se configuró correctamente y funcionó perfectamente.

Entonces, la solución ejecuta el phpunit configurado del proveedor (desde el mismo directorio raíz que la aplicación / y las pruebas /):

./vendor/bin/phpunit

Espero que ayude a alguien más!


Solo necesita llamarlo desde el archivo del proveedor

vendor/bin/phpunit Notice / Not /


Su archivo XML está bien como está. Sin embargo, debe asegurarse de que los archivos PHP en sus tests/ carpeta tengan el siguiente nombre:

tests / Test.php <--- Tenga en cuenta la "T" mayúscula
pruebas / usuario Test.php
tests / fooBar Test.php
etc.

Los nombres de los archivos deben terminar con "Test.php" . Esto es lo que PHPUnit está buscando dentro de los directorios.

Además, cada método de prueba debe tener un nombre que comience con "prueba":

public function testFooBar() { // Your test code }

¡Espero que ayude!


Tal vez un poco al lado, pero si está (como yo) usando Laravel en Vagrant, asegúrese de ejecutar phpunit dentro del cuadro vagabundo y no en el "lado de las ventanas". :)


Tuve el mismo problema de ¡ No se ejecutaron pruebas! , resuelto manteniendo el mismo nombre de archivo y nombre de clase .


Tuve el mismo problema después de que PHPUnit en nuestras máquinas virtuales se actualizara a la versión 6. Incluso --debug y --verbose no dijeron nada útil, solo "No se ejecutaron pruebas". Al final resultó que las clases y los espacios de nombres se cambiaron en la nueva versión y simplemente no quería ejecutar los archivos que contenían referencias a clases antiguas. La solución para mí fue simplemente reemplazar en cada caso de prueba esto:

class MyTestCase extends /PHPUnit_Framework_TestCase {...}

con:

use PHPUnit/Framework/TestCase; class MyTestCase extends TestCase {...}


Tuve el problema de que no se ejecutaran pruebas, incluso cuando las cosas estaban bien configuradas.

La causa fue que el espacio de nombres no era el primer comando del archivo, sino después de algunos comentarios de doc-block.

revertir causó que phpunit vea las pruebas y se ejecute correctamente.



si está usando PHPSTORM vaya a Configuración y luego vaya a

  • Test Frameworks

    y haga clic en + y elija

  • PHPUnit Local entonces
  • Use Composer Auto Loader luego pegue esto como en la ruta al campo de script
  • C:/{YOUR PROJECT NAME}/vendor/autoload.php
  • haga clic en Aceptar
  • HAPPY TESTING