查找运行测试的类时出错,即使我在 IDE 中使用了自动测试创建功能
Posted
技术标签:
【中文标题】查找运行测试的类时出错,即使我在 IDE 中使用了自动测试创建功能【英文标题】:Error finding class that test runs from, even though I use an automatic test creation function in IDE 【发布时间】:2021-08-24 13:15:55 【问题描述】:我正在使用 phpUnit,PHPStorm。
现在,我正在测试的实际文件位于root->foo->config
接下来,如果我选择我要测试的文件,然后右键单击,new phptest,我会得到下面的屏幕:
到目前为止,一切看起来都还不错。一切都是自动预先输入的。
所以我的 ip_require.php 进入 root->tests->foo
我的测试文件包含以下内容:
<?php
namespace config;
use foo\ip_request;
use PHPUnit\Framework\TestCase;
class ip_requestTest extends TestCase
public function testGetRealIpAddr()
$local = new ip_request();
$this->assertEquals('127.0.0.1', $local->getRealIpAddr());
在我的 phpunit.xml 中,我有:
<?xml version="1.0" encoding="UTF-8"?>
<target name="test">
<phpunit
bootstrap="tests/bootstrap.php"
colors="true"
> <!-- changed from vendor/autoload.php-->
<testsuites>
<testsuite name = "Website">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<php>
<ini name="error_reporting" value="-1" />
<env name="KERNEL_CLASS" value="App\Kernel" />
<env name="APP_ENV" value="test" />
<env name="APP_DEBUG" value="1" />
<env name="SHELL_VERBOSITY" value="-1" />
</php>
</phpunit>
</target>
我的 bootstrap.php 里面只有
ini_set('display_errors', true);
error_reporting(E_ALL);
include $_SERVER['DOCUMENT_ROOT'].'\foo\ip_requestTest.php';
我在 bootstrap.php 预览中得到错误:
我悬停在上面的所有东西看起来都指向了班级的正确方向。
如果我点击并关注测试文件中的课程,它会将我带到正确的位置
我的 PHPUnit 已安装到最新版本,在命令行和 composer.json 中验证
"require":
"phpunit/phpunit": "9.3",
"ext-mysqli": "*"
,
有什么想法吗?我已经用完了可以尝试的链接...
【问题讨论】:
【参考方案1】:我找到了一个修复方法,至少可以通过 bootstrap.php 页面。
include __DIR__ . '/../foo/config/ip_request.php';
然后我的终端中仍然出现类似的错误消息,但最终让我的测试正常工作的是我确保 composer.json 具有相同版本的 PHPUnit。
一旦他们在相同的地方工作!
【讨论】:
这些测试不应该在浏览器中运行。以防万一你想知道为什么事情看起来很复杂。在 phpstorm 或命令行中运行它们。 Phpstorm 允许您直接从 composer.json 进行配置。在那里你需要 Phpunit,然后你通常准备好了,你可以在 Phpstorm 编辑器中的绿色向右箭头按钮上执行单元测试。以上是关于查找运行测试的类时出错,即使我在 IDE 中使用了自动测试创建功能的主要内容,如果未能解决你的问题,请参考以下文章