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

2022-08-30 07:09:19

我想在我的项目中测试特定的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".=> 无法打开文件“测试/存储库/AppVersionTest.php”
  • phpunit "test\repositories\AppVersionTest".=> 无法打开文件“测试/存储库/AppVersionTest.php”
  • phpunit --filter "repositories\AppVersionTest".=> 未执行任何测试!
  • phpunit --testsuite "repositories\AppVersionTest".=> 未执行任何测试!

任何帮助?谢谢


答案 1

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

phpunit --filter ApplicationVersionFormatTest

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


答案 2

用于通过多种方式在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'

有关运行测试的更多方式,请参阅更多


推荐