라라벨에서 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
'programing' 카테고리의 다른 글
MySQL find_in_set(복수 검색 문자열 포함) (0) | 2022.09.21 |
---|---|
장고 모델() 대 Model.objects.create() (0) | 2022.09.21 |
기존 테이블에 자동 증가 기본 키 삽입 (0) | 2022.09.21 |
Java에서 null 값을 확인하는 가장 좋은 방법? (0) | 2022.09.21 |
Arrays.asList(array)와 새로운 ArrayList(Arrays.asList(array)의 차이점 (0) | 2022.09.21 |