我寫了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堆棧,如果它可以幫助解決我的問題。
嘗試在cmd或powershell中使用此命令'composer -o dump-autoload' – McStuffins
它的工作原理!謝謝!但我想知道它爲什麼會起作用,而'composer dump-autoload'不起作用? @mcstuffins –
它應該已經工作。你做了'-o'。它所做的就是優化你的作曲家文件。我很高興它的工作。大多數情況下,當這個問題發生時,這將是由於作曲家和它自動加載的方式。 – McStuffins