cómo probar una clase de prueba específica usando phpunit en laravel

4 minutos de lectura

avatar de usuario
Guajarat Santana

Quiero probar una clase de prueba específica en mi proyecto, ya que hay muchas clases de prueba que fallan y solo quiero probar una clase a la vez.

Creé la clase de prueba en la siguiente carpeta \test\repositories\ApplicationVersionFormat.php :

<?php
use App\Repositories\ApplicationVersionFormat;

class ApplicationVersionFormatTest extends \TestCase
{
  public function testValidFormat()
  {
    $version = '1.2.3';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(true,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat()
  {
    $version = '11.2.3';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat2()
  {
    $version = '1.22.3';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat3()
  {
    $version = '1.2.33';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat4()
  {
    $version = '11.22.33';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }
}

así que probé este siguiente comando pero nada de esto funciona:

  • phpunit "repositories\AppVersionTest". => No se puede abrir el archivo “test/repositories/AppVersionTest.php”
  • phpunit "test\repositories\AppVersionTest". => No se puede abrir el archivo “test/repositories/AppVersionTest.php”
  • phpunit --filter "repositories\AppVersionTest". => ¡Ninguna prueba ejecutada!
  • phpunit --testsuite "repositories\AppVersionTest". => ¡Ninguna prueba ejecutada!

¿alguna ayuda? Gracias

  • ¿Cuál es el resultado del comando que ejecutas?

    – Mateo

    24 de agosto de 2016 a las 9:03

  • Intente comprobar alguna configuración de inclusión/exclusión en sus archivos phpunit.xml(.dist). ¿Puedes publicar estos archivos?

    – Mateo

    24 de agosto de 2016 a las 9:37

Después de probar varias formas, descubrí que no necesito incluir la carpeta para probar la clase de prueba específica. Esto funciona para mí, ejecuta todas las pruebas en la clase:

phpunit --filter ApplicationVersionFormatTest

Creo que es porque mi ApplicationVersionFormatTest extiende The TestCase y devuelve la instancia de la aplicación que sirve como “pegamento” para todos los componentes de Laravel.

  • Además del comando phpunit, puede usar el comando test Artisan para ejecutar sus pruebas. El corredor de pruebas Artisan proporciona informes de prueba detallados para facilitar el desarrollo y la depuración:

    – Yohanim

    30 de julio de 2021 a las 3:03

  • Intenté poner todo el espacio de nombres de prueba, pero no funcionó; debe pasar el nombre de la clase solo para que funcione.

    – shamasen

    6 de julio a las 14:27

avatar de usuario
Jignesh Joisar

para ejecutar la prueba de phpunit en laravel de muchas maneras …

vendor/bin/phpunit --filter methodName className pathTofile.php

vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'

para prueba de una sola clase:

vendor/bin/phpunit tests/Feature/UserTest.php
vendor/bin/phpunit --filter  tests/Feature/UserTest.php
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest'
vendor/bin/phpunit --filter 'UserTest' 

para el método único de prueba:

 vendor/bin/phpunit --filter testExample 
 vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
 vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php

para ejecutar pruebas de todas las clases dentro del espacio de nombres:

vendor/bin/phpunit --filter 'Tests\\Feature'

para más pruebas de ejecución ver más

  • vendor/bin/phpunit --filter tests/Feature/UserTest.php vuelve a test ejecutado en mi caso.

    – shamasen

    7 de julio a las 12:10

avatar de usuario
tbone1000

Para hacer lo mismo usando artisan correr:

php artisan test --filter ApplicationVersionFormatTest

  • En mi caso, funciona con las carpetas de funciones y unidades predeterminadas, pero si creo un nuevo conjunto de pruebas, no funciona.

    – Berni

    21 de diciembre de 2021 a las 15:43

  • @Berni asegúrese de que su clase de prueba recién agregada termine con Prueba, de lo contrario, PHPUnit no la reconocerá.

    – osemec

    23 de enero a las 21:22

  • @Berni asegúrese de agregar el nuevo conjunto de pruebas a su archivo phpunit.xml.

    – tbone1000

    10 de junio a las 14:19

Para una versión más nueva, esto podría funcionar

php artisan test --filter {MethodName}

// for instance
php artisan test --filter test_example

O

php artisan test --filter {ClassName}::{MethodName}

//for instance
php artisan test --filter ExampleTest::test_example

avatar de usuario
Vengerov

Probablemente pueda manejar eso con esta respuesta a una pregunta relacionada.

Solo marca la clase con @group anotación y ejecute PHPUnit con --group <group_name>

Actualizar

Tu mando con --filter no está completo. Prueba esto: phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"

avatar de usuario
Bhuvaneshwar Nagaraj

phpunit --filter <relative_path_to_file>

por ejemplo, los archivos para probar son,test/repos/EloquentPushTest.php,test/repos/EloquentWebTest.php
para las pruebas EloquentWebTest.php

usar phpunit --filter ./repos/ElqouentWebpush

avatar de usuario
joan16v

Ejemplo de uso:

php phpunit-5.7.27.phar -c app/ "src/package/TestBundle/Tests/Controller/ExampleControllerTest.php"

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad