【问题标题】:Class not found in nameSpace在名称空间中找不到类
【发布时间】:2016-03-20 16:12:53
【问题描述】:

我正在尝试使用PHPUnit 运行单元测试。但我得到了class not found error。我已经尝试了很长时间,但我仍然找不到问题所在。

这是文件夹结构。

我在 <base>/stats/cls 文件夹中有 Calc 类 和<base>/stats/Tests文件夹中的测试文件

composer.json文件

{
    "name": "app/test",
    "description": "I am learning PHPUnit",
    "authors": [
        {
            "name": "Fawzan",
            "email": "xxxxxx@xxx.xxx"
        }
    ],
    "minimum-stability": "dev",
    "require": {},
    "require-dev": {
        "phpunit/phpunit" : "*"
    }
}

Calc.php文件

<?php

namespace stats\cls;

class Calc
{

    public function add($a, $b)
    {
        return $a + $b;
    }

}

CalcTest.php文件

<?php     
namespace stats\Tests;

use stats\cls\Calc;

class CalcTest extends \PHPUnit_Framework_TestCase
{


    public function testAddEquals()
    {

        $x = 10;
        $y = 20;

        $baseball = new Calc();

        $result = $baseball->add($x, $y);

        $expectedResult = $x + $y;

        var_dump($result);

        $this->assertEquals($expectedResult, $result);

    }
}

phpunit.xml文件

<?xml version="1.0" encoding="utf-8" ?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Application Test Unit">
            <directory>./stats/Tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>

当我运行phpunit 命令时,我收到以下错误。

PHP Fatal error:  Class 'stats\cls\Calc' not found in /var/www/stats/Tests/CalcTest.php on line 26

有人可以帮我吗?

【问题讨论】:

  • 如果自动加载被破坏,显示composer.json文件。另外,为什么它在BaseballTest 中被破坏了 - 一个你没有显示的测试类。
  • 对不起,我复制了错误的错误行。我刚刚编辑了它。我将分享compose.json 文件。
  • 仅供参考,我认为这不是作曲家自动加载的问题。我有一个假人 assertTrue 工作正常。

标签: php namespaces phpunit


【解决方案1】:

您的composer.json 中没有任何自动加载您自己的代码的代码,因此引导vendor/autoload.php 只会加载依赖项——在这种情况下,只加载PHPUnit。

您仍然需要加载要测试的类。最简单的方法是使用 Composer 定义自动加载:

作为一种快速解决方法,您仍然可以在测试顶部(命名空间行下方)使用require_once() 来加载测试的类,但这应该只是证明您的代码有效的捷径。从长远来看,习惯于将自动加载定义添加到 composer.json 会更容易。

【讨论】:

  • 感谢您的提示。我将自动加载添加到 composer.json 并且它起作用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2017-07-12
  • 2011-05-13
相关资源
最近更新 更多