没有找到类phpunit

时间:2017-02-11 01:30:08

标签: php xml phpunit composer-php autoload

我写过phpunit测试。我使用以下命令运行它:

C:\Program Files (x86)\Ampps\www\phpunit.dev\vendor\bin>phpunit -c ../../phpunit.xml

但最终出现此错误:

PHP Fatal error: Class 'Acme\SumFinder' not found in C:\Program Files (x86)\Ampps\www\phpunit.dev\tests\AcmeTests\SumFinderTest.php on line 15

我从这些问题中尝试了几种解决方案:

但没有任何作用。可能是什么问题,我将如何解决它?谢谢!

我的目录结构:

  • phpunit.dev/src/Acme/SumFinder.php
  • phpunit.dev/tests/AcmeTests/SumFinderTest.php
  • phpunit.dev/composer.json
  • phpunit.dev/phpunit.xml

我的composer.json写得像这样:

{
 "require-dev": {
 "phpunit/phpunit": "3.7.*"
},
 "autoload": {
   "psr-4": {
   "Acme\\": "./src/"
 }
},
 "autoload-dev": {
  "psr-4": {
  "AcmeTests\\": "./tests/"
  }
 }
}

我的Acme \ SumFinder.php写得像这样:

<?php 
 namespace Acme;
 class SumFinder {
  private $inputArray;
  function __construct($inputArray = null) { ... }
  function findSum() { ... }
  function compareArrays() { ... }
 }
?>

我的AcmeTests \ SumFinderTest.php:

<?php 
  namespace AcmeTests;
  use Acme\SumFinder;

  class SumFinderTest extends \PHPUnit_Framework_TestCase
    function testFindSum() { ... }
    function testCompareArrays() { ... }
?>

我的phpunit.xml配置文件:

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

我正在使用Windows 10和AMPPS堆栈,如果它可以帮助解决我的问题。

1 个答案:

答案 0 :(得分:1)

作为一般答案:如果转储优化的自动加载器可以解决您的问题,而不是优化它仍会显示它,那么您的目录或文件名中就会出现拼写错误。

转储优化的自动加载器将扫描它在PSR-4或PSR-0自动加载所述目录中找到的所有文件,并编写一个包含找到的所有类名及其相应文件名的数组。如果您在路径中输入了拼写错误,则转储此数组会将类名称连接到正确的文件路径,而不管是否存在任何拼写错误。

请注意,某些文件系统(主要是Linux)区分大小写,有些则不区分(Windows),并且这些情况与PSR-4和PSR-0相关,这会导致自动加载在不区分大小写的文件系统上运行,但不是区分大小写的。

您的问题的问题在于,您提供的所有信息都没有包含您发现错误的OBVIOUS提示。但是,您可能重新键入了代码并且没有出错,而原始代码仍然在文件路径中有拼写错误。仔细检查一下。