PHPUnit测试类不能扩展另一个类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHPUnit测试类不能扩展另一个类相关的知识,希望对你有一定的参考价值。
目前,我有一个基础测试类,我的测试应该扩展:
<?php
namespace BlaBla;
class BasicTestCase extends UnitTest {
public function testPage()
{
$this->assertTrue(True);
}
}
在我的测试课中:
<?php
use BlaBla\BasicTestCase;
class BasicTest extends BasicTestCase {
}
我的问题是,如果我运行phpunit并且我想测试BasicTest
,我总是得到错误BasicTestCase class not found
。
搜索之后,我明白phpunit不使用composer,但我无法解决这个冲突。
更新:
使用require_once
或composer dump-autload
只会产生相同的错误(未找到类Base)。
同时给出类的命名空间,并没有解决问题(总是相同的错误)。
这里是phpunit.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="phpunit.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
<testsuite name="Core Test Suite">
<directory>./vendor/ipo/prodis-core/tests/</directory>
</testsuite>
</testsuites>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite_testing"/>
</php>
composer.json太长了,所以我在这里添加了import:
"autoload-dev": {
"classmap": [
"tests/AppTestCase.php",
"tests/AppTestCaseClassic.php",
"vendor/ipo/prodis-core/tests/TestCase.php"
]
},
对于结构,我在BasicTest
下在Laravel的文件夹测试下添加了第二类Services\Client\Testing
。
我注意到的是phpunit总是在Base class
的同一位置搜索BasicTest
。
bootstrap="phpunit.php"
这一行意味着PHPUnit将在运行测试之前包含phpunit.php
文件(来自项目的根目录) - 您应该在其中包含自动加载器:
<?php
require __DIR__ . '/vendor/autoload.php';
// rest of tests bootstrap
或者,如果您不需要任何其他引导程序,则可以在phpunit.xml
中直接将自动加载器作为引导文件包含在内:
bootstrap="vendor/autoload.php"
单独的事情是自动加载规则。很难说你的情况发生了什么,因为你没有分享你的文件。但是,如果您正在为测试基类使用名称空间,则可以为这些类注册常规的psr-4
自动加载规则:
"autoload-dev": {
"psr-4": {
"BlaBla\\": "tests/"
}
},
然后将你的BasicTestCase
类定义放在tests/BasicTestCase.php
中。
以上是关于PHPUnit测试类不能扩展另一个类的主要内容,如果未能解决你的问题,请参考以下文章
PHPUnit类“Error”不扩展PHPUnit_Framework_TestCase
PHPUnit 类“错误”不扩展 PHPUnit_Framework_TestCase
扩展 PHPUnit_Framework_TestCase 的不可测试基类
为 PHPUnit 创建一个基本测试类并将其扩展为常见功能会导致类未找到错误