php - 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 太长了,所以我在这里添加了导入:
"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
.
推荐阅读
- java - 生成 Selenium Cucumber 报告而不覆盖之前的 Maven 测试输出结果?
- r - 为什么 grouped_df 的对象属性中的索引从 0 而不是 R 中通常所做的 1 开始索引?
- javascript - 即使设置了 header:null 也会显示导航标题
- azure - 如何在 Azure 帐户中观看\订阅事件
- c# - 无法将 SSIS 包作为 SQL 服务器代理作业运行(因为 SAP GRIDVIEW 元素)
- python - Django - 获取 html 输入标签中的日期值
- apache-spark - Spark 中不存在 aes_encrypt
- jira - Jira 新界面中缺少投资组合功能
- java - 使用 Gradle 依赖项调试 Maven 项目
- cors - Fantasy Premiere League API CORS