실행할 특정 테스트 스위트를 어떻게 선택할 수 있습니까?
$ phpunit –configuration config.xml
config.xml :
<testsuites>
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuites>
답변
다음은 PHPUnit 3.7.13과 같은 코드입니다.
$ phpunit --configuration config.xml --testsuite Library
$ phpunit --configuration config.xml --testsuite XXX_Form
테스트 스위트 그룹을 실행하려면 다음을 수행 할 수 있습니다.
<testsuites>
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
<testsuite name="Both">
<directory>library</directory>
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuites>
그때
$ phpunit --configuration config.xml --testsuite Both
불행히도 PHPUnit은 현재 이와 같은 중첩 된 테스트 스위트를 지원하지 않습니다.
<testsuites>
<testsuite name="Both">
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuite>
</testsuites>
따라서 이런 방식으로 테스트 스위트 그룹을 실행하려면 xml 구성 복제가 필요합니다!
답변
이것은 phpunit-user 메일 링리스트에있는 다음 메시지에 의해 입증 된 것처럼 현재 버전의 PHPUnit에서는 불가능합니다 : http://thread.gmane.org/gmane.comp.php.phpunit.user/1302
그러나 대안이 있습니다. 간단히 phpunit에 경로를 전달할 수 있습니다.
phpunit library/XXX
이것은 library / XXX 디렉토리의 모든 테스트를 실행합니다.
이것이 충분하지 않은 경우 다른 옵션은 @group 주석 을 사용하여 테스트를 선택적으로 실행할 수있는 여러 범주로 나누는 것입니다.
답변
phpunit 6.1부터는 xml 설정 파일에서 속성을 사용할 수 있습니다 defaultTestSuite
. 이것은 기본 옵션을 사용하는 것과 같 phpunit --testsuite xxx
으며 무시됩니다.
답변
또 다른 옵션은 개별적으로 테스트하려는 각 테스트 스위트에 대해 별도의 구성 파일을 만드는 것입니다. 중복 설정을 복사 / 붙여 넣기해야하는 오버 헤드가 있지만 필요에 따라 각 구성 파일을 지정할 수 있습니다.
답변
여기에있는 다른 답변은 정확합니다. xml 구성을 사용하여이 작업을 수행 할 수 없지만 php에서 동일한 유형의 구성을 만들 수 있습니다.
확실히 가장 예쁜 것은 아니지만 필요한 기능을 제공해야합니다.
XML 구성을 제공했습니다.
<testsuites>
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuites>
가정적으로 “라이브러리”디렉토리에 3 개의 파일이 있다고 가정 해 보겠습니다.
library
XXX
FormTest.php
Unit
unittest1.php
unittest2.php
그리고 각 파일에는 완벽한 명명 규칙에 따라 하나의 테스트가 포함되어 있습니다. 예 : FormTest contains testForm ()
구성을 위해 모든 것을 포함하는 구성을 만듭니다.
<?php
include_once "library/XXX/FormTest.php";
include_once "library/Unit/unittest1.php";
include_once "library/Unit/unittest2.php";
그런 다음 phpunit 명명 규칙에 따라 클래스를 생성합니다. 실제로 사용하지 않을 것이므로 원하는대로 이름을 지정할 수 있습니다.
class LibraryConfigTest extends PHPUnit_Framework_TestCase {
각 “테스트 스위트”는 단순히 원하는 테스트를 실행하는 방법입니다. 원하는대로 메서드 이름을 지정합니다. 다시 한 번 실제로 사용하지 않습니다. Phpunit이 실행을 처리합니다. 실행 방법을 알 수 있도록 그룹으로 주석을 달아야합니다.
/**
* All Tests in Library
* @group Library
**/
public function testLibrary() {
UnitTest1::testUnit1();
UnitTest2::testUnit2();
FormTest::testForm();
}
/**
* All Form tests in library/XXX
* @group XXX_Form
**/
public function testForm() {
FormTest::testForm();
}
}
?>
이제 원하는 기능을 얻으려면 원하는 그룹에 대해 “config”를 실행하십시오.
phpunit --group XXX_Form library_config.php
phpunit --group Library library_config.php
내가 말했듯이 이것은 지속적인 유지 관리가 필요하기 때문에 추악하고 확실히 좋은 코드는 아니지만 원하는 기능을 제공합니다.
바라건대 Bergmann은 그의 다음 라운드에서이 기능을 추가 할 것입니다. 비록 그가 거의 무시하고있는 것처럼 보이지는 않지만 .