我在项目中使用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 /中运行测试?
我看看测试套件,但我无法让它工作。到目前为止,我在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>
当我在Netbean中点击ALT + F6时,我只有来自/ test的测试。同样的事情:
/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.
答案 0 :(得分:13)
查看Appendix for your PHPUnit config file。您可以告诉PHPUnit要包含哪些文件夹:
<testsuites>
<testsuite name="Submodules">
<directory suffix="Test.php">../lib/*</directory>
</testsuite>
</testsuites>
当你运行它时,PHPUnit应递归迭代lib中的所有文件夹,并将所有以Test.php结尾的文件视为UnitTests。测试套件的名称无关紧要。为了简化XML文件的创作,consider using my phpunit-schema file。
PHPUnit Manual Chapter: Composing a Test Suite Using the Filesystem 中有一些其他信息。 Netbeans有一个input dialog in which you can specify the path to the phpUnit.xml and any custom TestSuite Class.
以下是一个示例项目: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
答案 1 :(得分:3)
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