查找运行测试的类时出错,即使我在 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 中使用了自动测试创建功能的主要内容,如果未能解决你的问题,请参考以下文章

运行创建的类时出错:“模块”对象不可调用

如何确保“java”在IDE可以找到所有必需的类时?

在 Cardview 中膨胀二进制 xml 文件的类时出错

二进制 XML 文件第 13 行:在扩展 VideoView 的类上膨胀类时出错

用很多方法实现接口=巨大的类。模式来拯救?

python 中try except 中如果出错了.怎么重新执行