ChatGPT解决这个技术问题 Extra ChatGPT

how to test specific test class using phpunit in laravel

I want to test specific testClass in my project since there are a lot of test class that's failure and I just want to test one Class at a time.

I've created the test Class in following folder \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));
  }
}

so I've tried this follwing command but none of this works :

phpunit "repositories\AppVersionTest". => Cannot open file "test/repositories/AppVersionTest.php"

phpunit "test\repositories\AppVersionTest". => Cannot open file "test/repositories/AppVersionTest.php"

phpunit --filter "repositories\AppVersionTest". => No tests executed!

phpunit --testsuite "repositories\AppVersionTest". => No tests executed!

any help? thanks

what's the output of the command you execute?
Try checking to some inclusion/exclusion configuration in your phpunit.xml(.dist) files. Can you post this files?

G
Gujarat Santana

After trying several ways, I found out that I don't need to include the folder to test the specific test class. This works for me it runs all the test on the class:

phpunit --filter ApplicationVersionFormatTest

I think it's because my ApplicationVersionFormatTest extend The TestCase and return application instance which serves as the "glue" for all the components of Laravel.


In addition to the phpunit command, you may use the test Artisan command to run your tests. The Artisan test runner provides verbose test reports in order to ease development and debugging:
I've tried to put the whole test namespace, but it didn't work; you should pass the class name only for it to work.
A
Amin Shojaei

for run phpunit test in laravel by many ways ..

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

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

for test single class:

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' 

for test single method:

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

for run tests from all class within namespace:

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

for more way run test see more


vendor/bin/phpunit --filter tests/Feature/UserTest.php returns to test excuted in my case.
l
linktoahref

To do the same thing using artisan run:

php artisan test --filter ApplicationVersionFormatTest

In my case it works with the default Feature and Unit folders, but if i create a new testsuite, it does not work .
@Berni make sure your newly added test class ends with Test, else PHPUnit will not recognize it.
@Berni be sure to add the new test suite to your phpunit.xml file.
O
Osman Rafi

For newer version this might work

php artisan test --filter {MethodName}

// for instance
php artisan test --filter test_example

OR

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

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

What about filtering by directory?
C
Community

You can probably manage that with this answer to a related question.

Just mark the class with @group annotation and run PHPUnit with --group <group_name>

Update

Your command with --filter is not complete. Try this: phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"


B
Bhuvaneshwar Nagaraj

phpunit --filter <relative_path_to_file> for example , files to test are,test/repos/EloquentPushTest.php,test/repos/EloquentWebTest.php for testing EloquentWebTest.php

use phpunit --filter ./repos/ElqouentWebpush


j
joan16v

Example of use:

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

E
Edham Rabuan

For laravel 8

php artisan test --filter ExampleTest

f
f_i

Using phpunit.xml

the @group option can be used on classes and methods.

class A

/**
 * @group active
 * */
class ArrayShiftRightTest extends TestCase
{
}

class B

/**
 * @group inactive
 * */
class BinaryGapTest extends TestCase
{    
}

in phpunit.xml

<groups>
    <include>
        <group>active</group>
    </include>
    <exclude>
        <group>inactive</group>
    </exclude>
</groups>

the classes that belongs to group active will be executed.


关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now