如何在laravel中使用phpunit测试特定的测试类

Guj*_*ana 41 php phpunit laravel laravel-5.2

我想在我的项目中测试特定的testClass,因为有很多测试类失败了,我只想一次测试一个类.

我在以下文件夹中创建了测试类\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));
  }
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试了这个以下命令,但这些都不起作用:

  • phpunit "repositories\AppVersionTest".=> 无法打开文件"test/repositories/AppVersionTest.php"
  • phpunit "test\repositories\AppVersionTest".=> 无法打开文件"test/repositories/AppVersionTest.php"
  • phpunit --filter "repositories\AppVersionTest".=> 没有执行测试!
  • phpunit --testsuite "repositories\AppVersionTest".=> 没有执行测试!

任何帮助?谢谢

Guj*_*ana 70

在尝试了几种方法后,我发现我不需要包含该文件夹来测试特定的测试类.这适用于我在类上运行所有测试:

phpunit --filter ApplicationVersionFormatTest

我认为这是因为我的ApplicationVersionFormatTest扩展了TestCase并返回了应用程序实例,该实例充当了Laravel所有组件的"粘合剂".


小智 37

使用artisanrun做同样的事情:

php artisan test --filter ApplicationVersionFormatTest
Run Code Online (Sandbox Code Playgroud)


Osm*_*afi 30

对于较新的版本,这可能有效

php artisan test --filter {MethodName}

// for instance
php artisan test --filter test_example
Run Code Online (Sandbox Code Playgroud)

或者

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

//for instance
php artisan test --filter ExampleTest::test_example
Run Code Online (Sandbox Code Playgroud)


Jig*_*sar 25

通过很多方式在laravel中运行phpunit测试..

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

vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'
Run Code Online (Sandbox Code Playgroud)

测试单班:

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' 
Run Code Online (Sandbox Code Playgroud)

用于测试单一方法:

 vendor/bin/phpunit --filter testExample 
 vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
 vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php
Run Code Online (Sandbox Code Playgroud)

对于命名空间内所有类的运行测试:

vendor/bin/phpunit --filter 'Tests\\Feature'
Run Code Online (Sandbox Code Playgroud)

更多方式运行测试看到更多


BVe*_*rov 7

您可能可以通过对相关问题的回答来解决这个问题。

只需用@group注释标记类并运行 PHPUnit--group <group_name>

更新

你的命令--filter不完整。尝试这个:phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"


小智 5

对于拉拉维尔 8

php artisan test --filter ExampleTest
Run Code Online (Sandbox Code Playgroud)