我的PHPUnit是通过Composer安装的(PHPUnit 3.7.21) 我有以下目录结构:
.
├── Code
├── Test
│ ├── Php
│ │ └── PlanningModuleTest.php
│ └── bootstrap.php
└── phpunit.xml
执行时
$ phpunit
从项目根目录,我得到以下输出:
PHPUnit 3.7.21 by Sebastian Bergmann.
Configuration read from D:\Development\...\phpunit.xml
Time: 40 ms, Memory: 4.00MB
No tests executed!
我的phpunit.xml
看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
bootstrap="Test/bootstrap.php"
>
<testsuites>
<testsuite name="pms">
<directory suffix="Test.php">./Test/Php/</directory>
</testsuite>
</testsuites>
<php>
<ini name="display_errors" value="true"/>
</php>
</phpunit>
我有一个文件PlanningModuleTest.php
,内容如下:
记录我的PHP文件的第一部分:
<?php
use jamesiarmes\PhpEws\Enumeration\UnindexedFieldURIType;
use PHPUnit\Framework\TestCase;
class PlanningModuleTest extends TestCase
{
public function setUp()
{
$_SESSION = array();
require_once('Code/Config.php');
parent::setUp();
}
public function testExchangeCalendarItemCreation()
{
$this->assertInstanceOf(ExchangeCalendarItem::class, new ExchangeCalendarItem());
}
public function testExchangeCalendarItem()
{
// ...
}
}
所以这应该是正确的,因为PHPUnit会检查文件和类名是否以Test.php结尾。
为什么phpunit
没有执行我的测试?
我尝试用
直接执行我的测试$ phpunit --verbose --debug Test\Php\PlanningModuleTest.php
然后返回:
Class 'Test\Php\PlanningModuleTest' could not be found in 'D:\Development\Git\projectmanagement\Test\Php\PlanningModuleTest.php'.`
答案 0 :(得分:1)
正如评论中已经建议的那样,在我们开始调试与使用全局安装的phpunit
版本相关的问题之前,这个版本与您在项目中安装的版本明显不同,请尝试运行
$ ./vendor/bin/phpunit
代替。
首先引起注意的是测试类缺少命名空间,而它看起来应该有一个:
<?php
namespace Test\Php;
use jamesiarmes\PhpEws\Enumeration\UnindexedFieldURIType;
use PHPUnit\Framework\TestCase;
class PlanningModuleTest extends TestCase
{
// ...
}
然后还要确保在composer.json
中配置并记录测试代码的命名空间要求:
并且您的自动加载已在composer.json
中正确设置,例如
{
"autoload-dev": {
"psr-4": {
"Test\\": "Test/"
}
}
}
由于您尚未与我们分享,请确保Test/bootstrap.php
包含
<?php
require_once __DIR__ . '/../vendor/autoload.php';
正确设置自动加载。
答案 1 :(得分:0)
您必须使用项目目录中的phpunit命令,如下所示:
project> phpunit
另外你的测试套件必须是这样的:
<testsuite name="pms">
<directory>Test/Php</directory>
</testsuite>