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

如何在laravel中使用phpunit测试特定的测试类,php,laravel,phpunit,laravel-5.2,Php,Laravel,Phpunit,Laravel 5.2,我想在我的项目中测试特定的测试类,因为有很多测试类失败,我只想一次测试一个类 我已在以下文件夹中创建了测试类\test\repositories\ApplicationVersionFormat.php: <?php use App\Repositories\ApplicationVersionFormat; class ApplicationVersionFormatTest extends \TestCase { public function testValidFormat()

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

我已在以下文件夹中创建了测试类
\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));
  }
}

您可能可以通过一个相关的问题来解决这个问题

只需使用
@group
注释标记类,并使用
--group
运行PHPUnit即可

更新


您对
--filter
的命令未完成。试试这个:
phpunit--filter-AppVersionTest“repositories\ApplicationVersionFormat.php”

在尝试了几种方法之后,我发现我不需要包含文件夹来测试特定的测试类。这对我很有用,它在类上运行所有测试:

phpunit——筛选应用程序版本FormatTest

我认为这是因为我的ApplicationVersionFormatTest扩展了TestCase并返回了应用程序实例,它是Laravel所有组件的“粘合剂”。

phpunit--filter
例如,要测试的文件是,
test/repos/EloquentPushTest.php
test/repos/EloquentWebTest.php
用于测试
EloquentWebTest.php


使用phpunit--filter./repos/elqountentwebpush

以多种方式在laravel中运行phpunit测试

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

vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'
对于测试单类:

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' 
对于单一试验方法:

 vendor/bin/phpunit --filter testExample 
 vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
 vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php
对于命名空间中所有类的运行测试:

vendor/bin/phpunit --filter 'Tests\\Feature'
欲了解更多运行测试的方法,请参见使用示例:

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

使用phpunit.xml

@group
选项可用于类和方法

甲级

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

/**
 * @group inactive
 * */
class BinaryGapTest extends TestCase
{    
}
phpunit.xml中

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

积极的
不活跃的

属于活动组的类将被执行。

要使用artisan run执行相同的操作:


php artisan测试--筛选应用程序版本FormatTest

您执行的命令的输出是什么?请尝试检查phpunit.xml(.dist)文件中的一些包含/排除配置。你能把这些文件寄出去吗?