it-swarm.com.de

so testen Sie bestimmte Testklassen mit Phpunit in Laravel

Ich möchte bestimmte testClass in meinem Projekt testen, da viele Testklassen fehlerhaft sind und ich nur eine Klasse gleichzeitig testen möchte.

Ich habe die Testklasse in folgendem Ordner \test\repositories\ApplicationVersionFormat.php erstellt: 

<?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));
  }
}

ich habe also folgenden Befehl ausprobiert, aber nichts davon funktioniert: 

  • phpunit "repositories\AppVersionTest". => Datei "test/repositories/AppVersionTest.php" kann nicht geöffnet werden
  • phpunit "test\repositories\AppVersionTest". => Datei "test/repositories/AppVersionTest.php" kann nicht geöffnet werden
  • phpunit --filter "repositories\AppVersionTest". => Keine Tests durchgeführt!
  • phpunit --testsuite "repositories\AppVersionTest". => Keine Tests durchgeführt!

irgendeine Hilfe? Vielen Dank

24
Gujarat Santana

Nachdem ich mehrere Möglichkeiten ausprobiert hatte, stellte ich fest, dass ich den Ordner nicht einschließen muss, um die jeweilige Testklasse zu testen. Dies funktioniert für mich, es führt alle Tests der Klasse durch: 

phpunit --filter ApplicationVersionFormatTest

Ich denke es liegt daran, dass mein ApplicationVersionFormatTest The TestCase- und Return-Anwendungsinstanz erweitert, die als "Klebstoff" für alle Komponenten von Laravel dient.

42
Gujarat Santana

für den phpunit test in laravel auf viele weise laufen .. 

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

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

für den Test Einzelunterricht:

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

für Test Einzelmethode:

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

für Laufversuche von allen Klassen innerhalb des Namespaces: 

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

für weitere Testfahrten siehe mehr

8
Jignesh Joisar

Sie können das wahrscheinlich mit dieser Antwort einer verwandten Frage erledigen.

Markieren Sie einfach die Klasse mit @group Annotation und führen Sie PHPUnit mit --group <group_name>

Update

Ihr Befehl mit --filter ist nicht vollständig. Versuchen Sie folgendes: phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"

3
BVengerov

phpunit --filter <relative_path_to_file> Zum Beispiel sind zu testende Dateien test/repos/EloquentPushTest.php, test/repos/EloquentWebTest.php zum Testen von EloquentWebTest.php

verwenden Sie phpunit --filter ./repos/ElqouentWebpush

Anwendungsbeispiel:

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