IT

phpunit으로 단일 테스트 방법을 실행하는 방법은 무엇입니까?

lottoking 2020. 3. 22. 10:51
반응형

phpunit으로 단일 테스트 방법을 실행하는 방법은 무엇입니까?


나는이라는 단일 시험 방법을 실행하기 위해 고군분투 testSaveAndDrop파일에 escalation/EscalationGroupTest.php와를 phpunit. 나는 다음 조합을 시도했다 :

phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop

각각의 경우 파일의 모든 테스트 방법 escalation/EscalationGroupTest.php이 실행됩니다. 하나의 방법을 대신 선택하는 방법?

클래스의 이름입니다 EscalationGroupTest과의 버전은 phpunit3.2.8이다.


다음 명령은 단일 방법으로 테스트를 실행합니다.

phpunit --filter testSaveAndDrop EscalationGroupTest escalation/EscalationGroupTest.php

phpunit --filter methodName ClassName path/to/file.php

최신 버전의 phpunit의 경우 다음과 같습니다.

phpunit --filter methodName path/to/file.php

주석에 테스트를 표시하는 것을 선호합니다.

/**
 * @group failing
 * Tests the api edit form
 */
public function testEditAction()

그런 다음

phpunit --group failing

명령 행에 전체 경로를 지정할 필요는 없지만, 코드를 어지럽히 지 않기 위해 커밋 전에이를 제거해야합니다.

단일 테스트에 여러 그룹을 지정할 수도 있습니다

/**
  * @group failing
  * @group bug2204 
  */
public function testSomethingElse()
{
}

더 일반적인 대답은 다음과 같습니다.

메소드 이름이 고유하다고 확신하는 경우 메소드 이름으로 만 필터링 할 수 있습니다 (이것이 저에게 효과적입니다)

phpunit --filter {TestMethodName}

그러나 파일 경로 / 참조를 지정하는 것이 더 안전합니다.

phpunit --filter {TestMethodName} {FilePath}

예:

phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php

빠른 참고 사항 : 이름이 지정된 함수가 testSave있고 testSaveAndDropcommand phpunit --filter testSave사용하여 이름이 지정된 다른 함수 도 실행 testSaveAndDrop되고로 시작하는 다른 함수가 testSave*있으면 이상합니다!


다음 명령은 정확히 testSaveAndDrop 테스트 를 실행 합니다 .

phpunit --filter '/::testSaveAndDrop$/' escalation/EscalationGroupTest.php

이런 식으로

phpunit --filter 'EscalationGroupTest::testSaveAndDrop' EscalationGroupTest escalation/EscalationGroupTest.php 

없이 =와와'

https://phpunit.de/manual/3.7/en/textui.html


여러 가지 방법으로 laravel에서 phpunit 테스트를 실행하십시오 ..

vendor/bin/phpunit --filter methodName className pathTofile.php

vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'

단일 클래스 시험 :

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'

더 많은 방법을 실행 테스트를 더보기


netbeans에 있다면 테스트 방법을 마우스 오른쪽 버튼으로 클릭하고 "집중 테스트 방법 실행"을 클릭하십시오.

집중 시험 방법 메뉴 실행


당신은 이것을 시도 할 수 있습니다 단일 테스트 사례를 실행할 수 있습니다

phpunit tests/{testfilename}

예 :

phpunit tests/StackoverflowTest.php

Laravel 5.5에서 단일 테스트 사례를 실행하려면

vendor/bin/phpunit tests/Feature/{testfilename} 

vendor/bin/phpunit tests/Unit/{testfilename} 

예 :

vendor/bin/phpunit tests/Feature/ContactpageTest.php 

vendor/bin/phpunit tests/Unit/ContactpageTest.php

테스트가 모두 실행되는 이유 --filter는 파일 이름 뒤에 플래그 가 있기 때문 입니다. PHPUnit은 옵션을 전혀 읽지 않으므로 모든 테스트 사례를 실행하고 있습니다.

도움말 화면에서 :

 Usage: phpunit [options] UnitTest [UnitTest.php]
        phpunit [options] <directory>

따라서 --filter@Alex 및 @Ferid Mövsümov 답변에서 언급 한대로 원하는 테스트 파일 앞에 인수를 이동하십시오 . 또한 원하는 테스트 만 실행해야합니다.


XML 구성 파일을 사용하는 경우 phpunit태그 안에 다음을 추가 할 수 있습니다 .

<groups>
  <include>
    <group>nameToInclude</group>
  </include>
  <exclude>
    <group>nameToExclude</group>
  </exclude>
</groups>

https://phpunit.de/manual/current/en/appendixes.configuration.html을 참조 하십시오


단일 테스트 방법을 실행하려면 --filter를 사용해야합니다 php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php

위의 필터는 testMethod 만 실행합니다.


나는 파티에 늦었다. 그러나 개인적으로 나는 전체 줄을 쓰는 것을 싫어합니다.

대신 .bash_profile 파일 에서 다음 바로 가기를 사용하면 새 별칭을 추가 한 후 .bash_profile 파일 소스로 지정 해야 작동하지 않습니다.

alias pa="php artisan"
alias pu="vendor/bin/phpunit" 
alias puf="vendor/bin/phpunit --filter"

용법:

puf function_name

puf filename

당신이 사용하는 경우 비주얼 스튜디오 코드를 당신은 당신의 테스트 산들 바람 만들기 위해 다음과 같은 패키지를 사용할 수 있습니다.

Package Name: Better PHPUnit
Link: https://marketplace.visualstudio.com/items?itemName=calebporzio.better-phpunit

그런 다음 설정에서 키 바인딩을 설정할 수 있습니다. MAC에서 Command + T 바인딩을 사용 합니다.

이제 커서를 임의의 함수에 놓고 키 바인딩을 사용하면 해당 단일 테스트가 자동으로 실행됩니다.

전체 클래스 를 실행해야하는 경우 클래스 위에 커서를 놓고 키 바인딩을 사용하십시오.

다른 것들이 있다면 항상 터미널 과 tweek

행복한 코딩!

참고 URL : https://stackoverflow.com/questions/26095051/how-to-run-single-test-method-with-phpunit

반응형