如何在幼虫期使用 phPunit 测试特定的测试类

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

我已经在以下文件夹 \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));
}
}

所以我尝试了下面的命令,但是没有一个奏效:

  • = > 无法打开文件“ test/Repositories/AppVersionTest.php”
  • = > 无法打开文件“ test/Repositories/AppVersionTest.php”
  • = > 不执行测试!
  • = > 不执行测试!

有人帮忙吗? 谢谢

115554 次浏览

您可以使用 这个答案来处理相关的问题。

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

更新

使用 --filter的命令不完整。请尝试这样做: phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"

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

phpunit --filter ApplicationVersionFormatTest

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

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

使用 phpunit --filter ./repos/ElqouentWebpush

用多种方法在幼虫体内进行 PPunit 测试。

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选项可用于类和方法。

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>

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

使用 artisan run 做同样的事情:

php artisan test --filter ApplicationVersionFormatTest

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

php artisan test --filter {MethodName}


// for instance
php artisan test --filter test_example

或者

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


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

8号幼虫

php artisan test --filter ExampleTest