如何在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)文件中的一些包含/排除配置。你能把这些文件寄出去吗?