类未找到phpunit

问题描述:

我写了phpunit测试。类未找到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堆栈,如果它可以帮助解决我的问题。

+2

尝试在cmd或powershell中使用此命令'composer -o dump-autoload' – McStuffins

+0

它的工作原理!谢谢!但我想知道它为什么会起作用,而'composer dump-autoload'不起作用? @mcstuffins –

+0

它应该已经工作。你做了'-o'。它所做的就是优化你的作曲家文件。我很高兴它的工作。大多数情况下,当这个问题发生时,这将是由于作曲家和它自动加载的方式。 – McStuffins

作为一般答案:如果转储优化的自动加载器解决了您的问题,而不是优化它仍然显示它,您的目录或文件名称中有一个错字。

转储优化的自动加载器将扫描它在PSR-4或PSR-0自动加载所述的目录中找到的所有文件,并写入一个包含所有找到的类名及其对应文件名的数组。如果你在路径中输入了错字,那么抛出这个数组会将类名连接到正确的文件路径,而不管任何输入错误。请注意,某些文件系统(主要是Linux)区分大小写,其他文件系统不是(Windows),并且这些情况与PSR-4和PSR-0相关,这会导致自动加载在大小写不敏感的文件系统,但不区分大小写。

与您的问题的问题是,您提供的任何信息都没有包含明显的提示,说明您做错了什么。但是,您可能重新输入了代码,但没有发生错误,而原始代码仍然在文件路径中存在拼写错误。仔细检查一下。

+0

在Windows系统上开发时,我遇到过几次文件名与文件中的实际类名不一致的情况。 –