web-dev-qa-db-fra.com

comment tester une classe de test spécifique en utilisant phpunit en laravel

Je souhaite tester testClass spécifique dans mon projet car de nombreux tests en classe échouent et je veux juste tester une classe à la fois.

J'ai créé la classe de test dans le dossier suivant \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));
  }
}

j'ai donc essayé cette commande, mais rien de tout cela ne fonctionne: 

  • phpunit "repositories\AppVersionTest". => Impossible d'ouvrir le fichier "test/repositories/AppVersionTest.php"
  • phpunit "test\repositories\AppVersionTest". => Impossible d'ouvrir le fichier "test/repositories/AppVersionTest.php"
  • phpunit --filter "repositories\AppVersionTest". => Aucun test exécuté!
  • phpunit --testsuite "repositories\AppVersionTest". => Aucun test exécuté!

de l'aide? Merci

24
Gujarat Santana

Après avoir essayé plusieurs méthodes, j'ai découvert que je n'avais pas besoin d'inclure le dossier pour tester la classe de test spécifique. Cela fonctionne pour moi car il exécute tous les tests sur la classe: 

phpunit --filter ApplicationVersionFormatTest

Je pense que c'est parce que mon ApplicationVersionFormatTest étend The TestCase et renvoie une instance d'application qui sert de "colle" à tous les composants de Laravel.

42
Gujarat Santana

pour exécuter phpunit test à laravel par de nombreux moyens .. 

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

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

pour test classe unique:

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

pour test méthode unique:

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

pour les tests d'exécution de toutes les classes de l'espace de noms: 

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

pour plus de chemin exécuter test voir plus

8
Jignesh Joisar

Vous pouvez probablement gérer cela avec cette réponse à une question connexe.

Marquez simplement la classe avec l'annotation @group et lancez PHPUnit avec --group <group_name>

Mettre à jour

Votre commande avec --filter n'est pas complète. Essayez ceci: phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"

3
BVengerov

phpunit --filter <relative_path_to_file> Par exemple, les fichiers à tester sont, test/repos/EloquentPushTest.php, test/repos/EloquentWebTest.php pour tester EloquentWebTest.php

utiliser phpunit --filter ./repos/ElqouentWebpush

1

Exemple d'utilisation:

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