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
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.
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
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"
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
Exemple d'utilisation:
php phpunit-5.7.27.phar -c app/ "src/package/TestBundle/Tests/Controller/ExampleControllerTest.php"