PHP:编写器自动加载不工作

PHP:编写器自动加载不工作,php,composer-php,Php,Composer Php,事实上,我对PHP还不熟悉。我在一个几乎空着的文件夹中运行这个程序(实际上是按照Lara casts教程:使用TDD设计一个流畅的API) 我的目录结构看起来像 src Expression.php 测验 ExpressionTest.php 卖主 composer.json 作曲家洛克 在composer.json内部: { "require-dev": { "phpunit/phpunit": "^5.2" }, "autoload

事实上,我对PHP还不熟悉。我在一个几乎空着的文件夹中运行这个程序(实际上是按照Lara casts教程:使用TDD设计一个流畅的API)

我的目录结构看起来像

  • src
    • Expression.php
  • 测验
    • ExpressionTest.php
  • 卖主
  • composer.json
  • 作曲家洛克
在composer.json内部:

{    
    "require-dev": {
        "phpunit/phpunit": "^5.2"
    },
    "autoload": {
        "psr-4": {
            "": "src/"
        }
    }
}
ExpressionTest.php内部:
class ExpressionTest extends PHPUnit_Framework_TestCase
{
    /** @test */
    public function it_finds_a_string()
    {
        $regex = Expression::make()->find('www');

        $this->assertRegExp($regex, 'www');
    }
}
Inside Expression.php

<?php

class Expression
{

}

我的语法有问题吗?我对作曲家的理解是非常基本的。提前感谢。

您需要在测试的顶部添加自动加载器。它通常是在

require __DIR__ . '/vendor/autoload.php';
您还可以将phpunit.xml文件添加到您的文件中,告诉它自动加载程序在哪里,然后它将在每次测试之前运行该文件:

<phpunit
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
    bootstrap="/path/to/bootstrap.php"

</phpunit>

PHPUnit本机不知道Composer,因此如果不配置PHPUnit,它将不知道您的自动加载程序设置

尝试使用
--bootstrap vendor/autoload.php运行PHPunit,告诉它使用自动加载文件加载


如果这不起作用,请检查Composer配置中的命名空间值(即,
:“src/”
可能需要更改。)

谢谢。我还必须指定PHPUnit位于文件夹的vendor文件夹中:./vendor/bin/PHPUnit tests--bootstrap vendor/autoload.php,但感谢您为我指明了正确的方向。对不起,我只想包含标志部分,而不是所需的全部命令。
<phpunit
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
    bootstrap="/path/to/bootstrap.php"

</phpunit>