[php] 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


답변

여러 가지 방법으로 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'

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


답변

이런 식으로

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

없이 =와와'

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


답변

  • 이것을 laravel 루트 디렉토리에서 사용중인 프로젝트 루트 디렉토리에서 실행하십시오.

vendor/bin/phpunit --filter 'Your method name'

사용자 정의 메소드 이름이있는 예.

 /** @test //Initilize this for custom method name, without test keyword
  *
  * Test case For Dashboard When User Not logged In it will redirect To login page
  */
  public function only_logged_in_user_see_dashboard()
  {
    $response = $this->get('/dashboard')
                   ->assertRedirect('/login');
  }

테스트 키워드가있는 예

/**
* A basic test example.
*
* @return void
*/
 public function testBasicTest()
 {
  $this->assertTrue(true);
 }