类未找到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
我从这些问题,尝试了几种解决方案:
- Class 'sample\question2\Hello' not found with composer and phpunit 我用下面的命令运行它
- Autoloading classes in PHPUnit using Composer and autoload.php
但没有任何工作。可能是什么问题,我将如何解决它?谢谢!
我的目录结构:
- 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堆栈,如果它可以帮助解决我的问题。
作为一般答案:如果转储优化的自动加载器解决了您的问题,而不是优化它仍然显示它,您的目录或文件名称中有一个错字。
转储优化的自动加载器将扫描它在PSR-4或PSR-0自动加载所述的目录中找到的所有文件,并写入一个包含所有找到的类名及其对应文件名的数组。如果你在路径中输入了错字,那么抛出这个数组会将类名连接到正确的文件路径,而不管任何输入错误。请注意,某些文件系统(主要是Linux)区分大小写,其他文件系统不是(Windows),并且这些情况与PSR-4和PSR-0相关,这会导致自动加载在大小写不敏感的文件系统,但不区分大小写。
与您的问题的问题是,您提供的任何信息都没有包含明显的提示,说明您做错了什么。但是,您可能重新输入了代码,但没有发生错误,而原始代码仍然在文件路径中存在拼写错误。仔细检查一下。
在Windows系统上开发时,我遇到过几次文件名与文件中的实际类名不一致的情况。 –
尝试在cmd或powershell中使用此命令'composer -o dump-autoload' – McStuffins
它的工作原理!谢谢!但我想知道它为什么会起作用,而'composer dump-autoload'不起作用? @mcstuffins –
它应该已经工作。你做了'-o'。它所做的就是优化你的作曲家文件。我很高兴它的工作。大多数情况下,当这个问题发生时,这将是由于作曲家和它自动加载的方式。 – McStuffins