program story

PHPUnit-구성 파일 사용시 '실행 된 테스트 없음'

inputbox 2020. 10. 25. 12:10
반응형

PHPUnit-구성 파일 사용시 '실행 된 테스트 없음'


문제

코드 품질을 향상시키기 위해 저는 평범한 테스트 솔루션 대신 단위 테스트를 사용하여 코드를 테스트하는 방법을 배우기로 결정했습니다.

공통 데이터베이스 기능을 수행 할 수있는 개인 라이브러리 용 composer를 사용하여 PHPUnit을 설치하기로 결정했습니다. 처음에는 PHPUnit에 대한 구성 파일이 없었고 다음과 같은 명령을 실행했습니다.

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest

이것은 터미널 명령이므로 .php확장을 포함하지 않았습니다 . 위에서 언급 한 GeneralStringFunctionsTest는 실제로 GeneralStringFunctionsTest.php파일입니다.

출력은 내가 예상 한 것입니다.

시간 : 31ms, 메모리 : 2.75Mb

확인 (테스트 1 개, 어설 션 1 개)

그런 다음 매번 파일을 수동으로 입력하는 대신 구성 파일을 사용하여 테스트 스위트를 자동으로로드하려고했습니다. phpunit.xml루트 디렉터리에 라는 파일을 만들고 파일에 http://pastebin.com/0j0L4WBD 를 입력했습니다 .

<?xml version = "1.0" encoding="UTF-8" ?>
<phpunit>
    <testsuites>
        <testsuite name="Tests">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

이제 명령을 실행할 때 :

phpunit

다음 출력을 얻습니다.

Sebastian Bergmann과 기여자들이 만든 PHPUnit 4.5.0.

/Users/muyiwa/Projects/DatabaseHelper/phpunit.xml에서 읽은 구성

시간 : 16ms, 메모리 : 1.50Mb

실행 된 테스트가 없습니다!

도움이되는 경우 내 디렉토리 구조는 다음과 같습니다.
src-최상위 디렉토리 (내 모든 소스 코드 포함)
테스트-최상위 디렉토리 (내 모든 테스트 포함, 내 src 폴더 와 동일하게 구성됨 )
공급 업체-Composer 타사 파일

또한 작성기 json 및 잠금 파일과 최상위 수준의 phpunit xml 파일이 파일로 있습니다.

내가 시도한 것들

  • 디렉토리를 phpunit.xml변경tests/GeneralStringFunctions
  • 디렉토리를 phpunit.xml변경./tests
  • 이동 phpunit.xml받는 파일을 tests디렉토리 다음 디렉토리로 변경하는 ./대신 tests.
  • phpunit.xml"Tests"를 명시 적 접미사로 지정 하기 위해의 디렉토리 태그에 접미사 속성을 추가합니다 .

그만한 가치 (늦은 것)를 위해, 저는 최근에 간단한 웹 사이트를위한 새로운 Laravel 5.1 프로젝트를 만드는 동안 이것을 만났습니다. 나는 그것을 디버깅하려고 시도했지만 혼란 스러웠다.

php artisan make:test homeTest

(참이라고 주장하는 기본 테스트가 참입니다)

그리고 출력을 보았다

No tests executed!

결국 문제는 내 PHP 설치와 관련이 있습니다. "phpunit"은 전역 적으로 등록되고 다르게 구성되었지만 Laravel 설치와 함께 제공된 phpunit은 올바르게 구성되고 완벽하게 실행되었습니다.

따라서 수정은 공급 업체의 구성된 phpunit (app / 및 tests /와 동일한 루트 디렉토리에서)을 실행합니다.

./vendor/bin/phpunit

다른 사람에게 도움이되기를 바랍니다!


XML 파일은 그대로입니다. 그러나 tests/폴더 에있는 PHP 파일의 이름이 다음과 같이 지정 되었는지 확인해야 합니다.

tests / Test.php <--- 대문자 "T"
tests / user Test.php
tests / fooBar Test.php
등을 참고 하십시오 .

파일 이름은 "Test.php"로 끝나야 합니다. 이것이 PHPUnit이 디렉토리 내에서 찾고있는 것입니다.

또한 모든 테스트 메서드에는 "test"로 시작하는 이름이 있어야합니다.

public function testFooBar()
{
    // Your test code
}

도움이 되었기를 바랍니다.


Windows에서는 터미널에서 다음 명령을 사용하십시오.

.\vendor\bin\phpunit

그것은 명령이

phpunit

"실행 된 테스트가 없습니다!"를 반환합니다.

Mac에서

./vendor/bin/phpunit

도움이 되었기를 바랍니다.


가상 머신의 PHPUnit이 버전 6으로 업데이트 된 후에도 동일한 문제가 발생했습니다. --debug 및 --verbose조차도 "실행 된 테스트가 없습니다"라는 말은 유용하지 않습니다. 결국 새 버전에서 클래스와 네임 스페이스가 변경되었으며 이전 클래스에 대한 참조가 포함 된 파일을 실행하고 싶지 않았습니다. 나를위한 수정 사항은 모든 테스트 케이스에서 다음을 교체하는 것입니다.

class MyTestCase extends \PHPUnit_Framework_TestCase {...}

와:

use PHPUnit\Framework\TestCase;

class MyTestCase extends TestCase {...}

공급 업체 파일에서 호출하기 만하면됩니다.

vendor\bin\phpunit 공지 사항


I pulled my hair for 10 minutes before i decided to use --debug (good way to go by the way) to discover the simple fact that file name didn't respect the naming convention, i had an extra "s" at the end.

wrong

CreateAdminTests

right

CreateAdminTest

hope this note could help for someone


I realize this is super old, but it just happened to me too. Hopefully this will help someone.

My problem was that I forgot the '@' symbol in /** @test */

WRONG:

/** test */
function a_thread_can_be_deleted()
{
    ...
}

RIGHT:

/** @test */
function a_thread_can_be_deleted()
{
    ...
}

if you are using PHPSTORM go to Settings then goto

  • Test Frameworks

    and click + and choose

  • PHPUnit Local then
  • Use Composer Auto Loader then paste this like in path to script field
  • C:\{YOUR PROJECT NAME}\vendor\autoload.php
  • click OK
  • HAPPY TESTING

Have you added a test suite to you phpunit.xml file?

<phpunit>
    <testsuite name="app1" >
        <directory>./</directory>
    </testsuite>
</phpunit>

You can add multiple directories in there.


For me, using phpunit --debug showed me which test it was not executing, inside, I had

$this->visit('/')
         ->see('Laravel');

and I think because the directory was protected with .htaccess authentication, it could not get through to visit the page

The solution for me was to take out this test (or most likely take out .htaccess authentication)


This is very late but I hope it helps someone.

I got my tests to run by using an absolute reference. folder structure [ project/tests/test.php]

my directory line looked like this ./tests/test.php


A little bit on the side maybe, but if you are (like me) using Laravel in Vagrant, make sure you are running phpunit inside of the vagrant box and not on the "windows side". :)


I had the issue of no tests being executed, even when things were set up fine.

The cause was the namespace was not the first command of the file, it was after some doc-block comments.

reverting caused phpunit to see the tests and run correctly.


Mine was a bit funny.

When I used php artisan make:test I accidentally put .php like ProductRewardPointController.php which created ProductRewardPointController.php.php and phpunit simply ignored it.

I just delete the extra .php and things back to normal


I had the same issue of No tests executed!, solved by keeping the same name of file and class name.


Check phpunit.xml file, look inside testsuites.

My version of phpunit (2019) is looking for files ending (suffix) *Test.php . So, make sure all the test files are named properly (ex.: BookTest.php is correct, BookTests.php is not, BookTestCase.php is not).


using de cmd console resolved this problem passing the enterely path Test realized

I did't find another way to do it It does not work from this way

I hope this was helpful for someone

참고URL : https://stackoverflow.com/questions/29299206/phpunit-no-tests-executed-when-using-configuration-file

반응형