Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在phpunit testdirectory中实例化对象_Php_Phpunit_Composer Php - Fatal编程技术网

无法在phpunit testdirectory中实例化对象

无法在phpunit testdirectory中实例化对象,php,phpunit,composer-php,Php,Phpunit,Composer Php,我试图找出phpunit,但当我尝试在tesfile中实例化一个对象时,我一直遇到以下错误: 致命错误:在c:\xampp\htdocs\stats\Test\BaseballTest.php中找不到Class stats\ballball 我的结构如下: root/barball.php namespace stats; class Baseball { //some code } namespace stats\Test; use stats\Baseball; class

我试图找出phpunit,但当我尝试在tesfile中实例化一个对象时,我一直遇到以下错误:

致命错误:在c:\xampp\htdocs\stats\Test\BaseballTest.php中找不到Class stats\ballball

我的结构如下:

root/barball.php

namespace stats;

class Baseball {
    //some code
}
namespace stats\Test;

use stats\Baseball;

class BaseballTest extends \PHPUnit_Framework_TestCase {
     $baseball = new Baseball(); // doesn't work
}
root/phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./Test/</directory>
        </testsuite>
    </testsuites>
</phpunit>
root/composer.json

{
    "require": {
    },
    "require-dev": {
        "phpunit/phpunit": "*"
    },
    "autoload": {
        "psr-0": {
            "stats": ""
        }
    }
}
(stats文件夹是根目录。)

当我将
BaseballTest.php
移出测试文件夹并将其放入根目录时,它似乎工作正常。我正在利用作曲家来演奏

如果你们能帮我,那就太好了


提前谢谢

使用当前目录布局和composer配置,
Basketball
类应位于
stats
目录中

您可以将其保留在根目录中,但需要切换到
psr-4
autoloader,它允许您跳过命名空间映射中包含的目录:

{
    "require": {
    },
    "require-dev": {
        "phpunit/phpunit": "*"
    },
    "autoload": {
        "psr-4": {
            "stats\\": ""
        }
    }
}
命名空间前缀名称后面的斜杠很重要(
stats\\\

有关自动加载标准的详细信息:

我还建议您使用更标准的目录布局。将类放入
src
目录,将测试放入
tests
目录。名称空间大部分是大写的。下面是它的样子:


/测试/

工作起来很有魅力!非常感谢。
{
    "require": {
    },
    "require-dev": {
        "phpunit/phpunit": "*"
    },
    "autoload": {
        "psr-4": {
            "Stats\\": "src"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Stats\\Tests\\": "tests"
        }
    }
}