тестирование нескольких папок
В своем проекте я использую подмодули PHPUnit 3.5.12, netbean 6.9 и git.
Итак, архитектура моей папки выглядит так:
lib/
lib/submodule1
lib/submodule1/src
lib/submodule1/tests
lib/submodule2
lib/submodule2/src
lib/submodule2/tests
src/
tests/
Учитывая, что моя основная тестовая папка (с phpunit_netbean.xml и bootstrap.PHP) является в /тесты/ папки; как я могу быть в состоянии выполнять тесты в /lib/*/тесты/ слишком ?
Я посмотрел на testsuite, но я не могу заставить его работать. До сих пор я пробовал следующую конфигурацию в моих тестах/phpunit_netbean.xml-файл:
<?xml version="1.0"?>
<phpunit
bootstrap="./bootstrap.php"
strict="true"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
colors="false"
verbose="true"
>
<testsuites>
<testsuite name="modules">
<directory>../lib/*</directory>
</testsuite>
</testsuites>
</phpunit>
И когда я нажмите ALT+F6 в Netbean, у меня есть только тесты из /тестов, которые выполняются. То же самое с:
/tests$ phpunit -c phpunit_netbean.xml --testdox ./
enter code here
Кроме того, я попробовал это:
/tests$ phpunit -c phpunit_netbean.xml --testdox --loader modules ./
PHPUnit 3.5.12 by Sebastian Bergmann.
Could not use "modules" as loader.
2 ответа:
Посмотрите Приложение для вашего конфигурационного файла PHPUnit. Вы можете указать PHPUnit, какие папки включать:
<testsuites> <testsuite name="Submodules"> <directory suffix="Test.php">../lib/*</directory> </testsuite> </testsuites>
Когда вы запускаете это, PHPUnit должен рекурсивно перебирать все папки в lib и рассматривать все файлы, заканчивающиеся на Test.php как UnitTests. Имя объекта тестирования не имеет значения. Чтобы облегчить создание XML-файла, рассмотрите возможность использования моего файла phpunit-schema .
Существует некоторая дополнительная информация к этому в главе руководства PHPUnit: Составление набора тестов с использованием файловой системы . Netbeans имеет диалоговое окно ввода , в котором можно указать путь к phpUnit.xml и любой пользовательский класс TestSuite.
Вот пример проекта: https://github.com/gooh/sample
C:\Users\Gordon\Desktop\demo\tests>phpunit --testdox PHPUnit 3.5.13 by Sebastian Bergmann. A [x] One B [x] One My [x] One
Создадим тестовый кейс:
mkdir project mkdir project/tests mkdir project/modules/ mkdir project/modules/a/ mkdir project/modules/a/tests/ mkdir project/modules/b/ mkdir project/modules/b/tests/ echo "<?php class MyTest extends PHPUnit_Framework_TestCase { public function testOne() { \$this->assertTrue(true); } } " > project/tests/MyTest.php echo "<?php class MyTwoTest extends PHPUnit_Framework_TestCase { public function testOne() { \$this->assertTrue(true); } } " > project/modules/a/tests/MyTwoTest.php echo "<?php class MyThreeTest extends PHPUnit_Framework_TestCase { public function testOne() { \$this->assertTrue(true); } } " > project/modules/b/tests/MyThreeTest.php tree . `-- project |-- modules | |-- a | | `-- tests | | `-- MyTwoTest.php | `-- b | `-- tests | `-- MyThreeTest.php `-- tests `-- MyTest.php
Если вы сейчас Просто запустите
phpunit project
, он выполнит все Тесты в этих папках. Так что нет необходимости в какой-либо дальнейшей конфигурации.Единственное, что может укусить вас, если у вас есть девушки в ваших папках / src/, которые заканчиваются на * Test.php, если вы этого не сделаете, у вас не будет никаких проблем, насколько я могу судить.
phpunit project/ PHPUnit 3.5.11 by Sebastian Bergmann. ... Time: 0 seconds, Memory: 2.75Mb