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

时间:2016-08-24 08:25:37

标签: php laravel phpunit 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));
  }
}

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

  • phpunit "repositories\AppVersionTest"。 =&GT; 无法打开文件“test / repositories / AppVersionTest.php”
  • phpunit "test\repositories\AppVersionTest"。 =&GT; 无法打开文件“test / repositories / AppVersionTest.php”
  • phpunit --filter "repositories\AppVersionTest"。 =&GT; 没有执行任何测试!
  • phpunit --testsuite "repositories\AppVersionTest"。 =&GT; 没有执行任何测试!

任何帮助?感谢

6 个答案:

答案 0 :(得分:11)

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

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

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

用于测试单个班级:

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'

更多方式运行测试see more

答案 1 :(得分:9)

要使用artisan run做同样的事情:

php artisan test --filter ApplicationVersionFormatTest

答案 2 :(得分:3)

您可以使用this answer管理相关问题。

只需使用--group <group_name>注释标记该类,然后使用--filter运行PHPUnit

<强>更新

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

答案 3 :(得分:1)

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

使用phpunit --filter ./repos/ElqouentWebpush

答案 4 :(得分:0)

使用示例:

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

答案 5 :(得分:0)

使用 phpunit.xml

@group选项可用于类和方法。

A级

/**
 * @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>

将执行属于活动组的类。