тестирование нескольких папок - PullRequest
10 голосов
/ 31 марта 2011

Я использую субмодули 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) находится в папке / tests /;Как я могу запустить тесты в / lib / * / tests / тоже?

Я смотрю на testsuite, но не могу заставить его работать.До сих пор я пробовал следующую конфигурацию в моем файле tests / 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, которые выполняются.То же самое с:

/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 ]

13 голосов
/ 31 марта 2011

Взгляните на Приложение для вашего конфигурационного файла PHPUnit .Вы можете указать PHPUnit, какие папки включать:

<testsuites>
    <testsuite name="Submodules">
        <directory suffix="Test.php">../lib/*</directory>
    </testsuite>
</testsuites>

При запуске этого PHPUnit должен рекурсивно перебирать все папки в lib и рассматривать все файлы, заканчивающиеся в Test.php, как UnitTests.Название тестового набора не имеет значения.Чтобы упростить создание XML-файла, рассмотрите возможность использования моего файла phpunit-схемы .

. В главе «1010 * PHPUnit Manual» есть дополнительная информация: Составление набора тестов с использованиемФайловая система .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
3 голосов
/ 31 марта 2011

Давайте создадим тестовый случай:

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
...