programing

라라벨에서 phpunit을 사용하여 특정 테스트 클래스를 테스트하는 방법

bestcode 2022. 9. 21. 00:09
반응형

라라벨에서 phpunit을 사용하여 특정 테스트 클래스를 테스트하는 방법

많은 테스트 클래스가 실패하기 때문에 프로젝트에서 특정 test Class를 테스트하고 싶습니다.한 번에 1개의 클래스만 테스트하고 싶습니다.

다음 폴더에 테스트 클래스를 만들었습니다.\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". => "test/repository/AppVersionTest.php" 파일을 열 수 없습니다.
  • phpunit "test\repositories\AppVersionTest". => "test/repository/AppVersionTest.php" 파일을 열 수 없습니다.
  • phpunit --filter "repositories\AppVersionTest". => 테스트가 실행되지 않았습니다!
  • phpunit --testsuite "repositories\AppVersionTest". => 테스트가 실행되지 않았습니다!

도와줄까? 고마워.

몇 가지 방법을 시도해 본 결과 특정 테스트 클래스를 테스트하기 위해 폴더를 포함할 필요가 없다는 것을 알게 되었습니다.이 방법은 모든 테스트를 클래스에서 실행합니다.

phpunit --filter ApplicationVersionFormatTest

ApplicationVersionFormatTest가 TestCase를 확장하여 Larabel의 모든 컴포넌트의 "글루" 역할을 하는 반환 애플리케이션 인스턴스를 확장했기 때문이라고 생각합니다.

다양한 방법으로 phpunit 테스트를 larabel로 실행합니다.

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'

자세한 실행 테스트를 보려면 자세한 내용을 참조하십시오.

를 사용하여 동일한 작업을 수행하려면artisan실행:

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

당신은 관련된 질문에 대한 이 답변으로 그것을 해결할 수 있을 것입니다.

반에 마크를 붙이기만 하면 됩니다.@group주석 달기 및 PHPUnit 실행--group <group_name>

갱신하다

명령어--filter완전하지 않습니다.이것을 시험해 보세요.phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"

phpunit --filter <relative_path_to_file>예를 들어 테스트할 파일은 다음과 같습니다.test/repos/EloquentPushTest.php,test/repos/EloquentWebTest.php테스트용EloquentWebTest.php

사용하다phpunit --filter ./repos/ElqouentWebpush

사용 예:

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

라라벨 8용

php artisan test --filter ExampleTest

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>

활성 그룹에 속한 클래스가 실행됩니다.

언급URL : https://stackoverflow.com/questions/39118117/how-to-test-specific-test-class-using-phpunit-in-laravel

반응형