PHPUnit 5.7(自动加载)Class 未找到
PHPUnit 5.7 (autoloaded) Class Not Found
我无法让 PHPUnit(版本 5.7)找到我的自定义框架 classes。任何帮助将不胜感激,因为我已经尝试过 alsrts。当我 运行 测试时,它抱怨说找不到自动加载的 class。
{
"scripts": {
"test": [
"@clean",
"@load",
"@phpunit"
],
"clean": "composer clear-cache",
"load": "composer dump-autoload -o",
"phpunit": "\"vendor/bin/phpunit\" --configuration phpunit.xml tests"
},
"autoload": {
"psr-4": {
"AdoptableFramework\": "src/",
"AdoptableFramework\Tests\": "tests/",
"AdoptableFramework\Extend\": "src/extend/"
}
},
"require": {
"matthiasmullie/minify": "^1.3"
},
"require-dev": {
"phpunit/phpunit": "5.7"
}
}
这是我的 phpunit.xml 的样子:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.7/phpunit.xsd"
bootstrap="vendor\autoload.php"
backupGlobals="true"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTestsThatDoNotTestAnything="true"
beStrictAboutTodoAnnotatedTests="true"
backupStaticAttributes="false"
cacheTokens="false"
colors="always"
convertErrorsToExceptions="true"
convertNoticesToExceptions="false"
convertWarningsToExceptions="false"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
stopOnRisky="false"
verbose="true">
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src/AdoptableFramework</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="tests/code_coverage"
showUncoveredFiles="true"/>
</logging>
</phpunit>
我的文件夹结构如下:
src
--AdoptableFramework
----Core
------Database.php tests
--databaseTest.php
--unitTestSuite.php
这是我的 databaseTest.php 的样子:
<?php
namespace AdoptableFramework\Tests;
use AdoptableFramework\Core\Database;
use AdoptableFramework\Tests\unitTestSuite;
class DatabaseTest extends UnitTestSuite
{
public function testDatabase()
{
$database = new Database();
$this->assertEquals(null, $database);
}
}
?>
这是我的 Database.php AdoptableFramework/Core。
<?
/**
* @link https://www.pswebsolutions.co.uk/
* @author Paul Sonny Cook <paul.cook@pswebsolutions.co.uk>
* @copyright 2017 P S Web Solutions Ltd
* @version 1.0.0
* @package psAdoptables
**/
namespace AdoptableFramework\Core;
class Database
{
public function __construct($host = null, $username = null, $password = null, $database = null) {
$this->type = __CLASS__;
if ($host || $username || $password || $database) {
$this->connect($host, $username, $password, $database);
} else {
$this->connect();
}
}
public function connect($host = DB_HOST, $username = DB_USER, $password = DB_PASS, $database = DB_DATABASE)
{
return true;
}
}
?>
autoload_static.php class 映射:
我查看了我的 autoload_static.php 文件,可以看到:
'AdoptableFramework\Core\Database' => __DIR__ . '/../..' . '/src/AdoptableFramework/Core/Database.php',
'AdoptableFramework\Extend\ExtendDatabase' => __DIR__ . '/../..' . '/src/AdoptableFramework/Extend/ExtendDatabase.php',
'AdoptableFramework\Game' => __DIR__ . '/../..' . '/src/AdoptableFramework/Game.php',
'AdoptableFramework\Tests\DatabaseTest' => __DIR__ . '/../..' . '/tests/databaseTest.php',
'AdoptableFramework\Tests\UnitTestSuite' => __DIR__ . '/../..' . '/tests/unitTestSuite.php',
如有任何帮助,我们将不胜感激。
在我看来,您的 src/AdoptableFramework
目录不是必需的。您可以删除它并将所有文件移动到更高一级,或者试试这个 use 语句:
use AdoptableFramework\AdoptableFramework\Core\Database;
这一行 "AdoptableFramework\": "src/",
告诉自动加载器 src 文件夹中的任何 class 已经在 AdoptableFramework 命名空间中。例如,如果您以这种方式创建 class Foo
src/Foo.php
,您将以这种方式导入它:
use AdoptableFramework\Foo;
非常抱歉浪费了大家的时间!
php 文件正在作为文本加载,因为它需要
一旦我改变了一切,点击到位并开始工作!
我无法让 PHPUnit(版本 5.7)找到我的自定义框架 classes。任何帮助将不胜感激,因为我已经尝试过 alsrts。当我 运行 测试时,它抱怨说找不到自动加载的 class。
{
"scripts": {
"test": [
"@clean",
"@load",
"@phpunit"
],
"clean": "composer clear-cache",
"load": "composer dump-autoload -o",
"phpunit": "\"vendor/bin/phpunit\" --configuration phpunit.xml tests"
},
"autoload": {
"psr-4": {
"AdoptableFramework\": "src/",
"AdoptableFramework\Tests\": "tests/",
"AdoptableFramework\Extend\": "src/extend/"
}
},
"require": {
"matthiasmullie/minify": "^1.3"
},
"require-dev": {
"phpunit/phpunit": "5.7"
}
}
这是我的 phpunit.xml 的样子:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.7/phpunit.xsd"
bootstrap="vendor\autoload.php"
backupGlobals="true"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTestsThatDoNotTestAnything="true"
beStrictAboutTodoAnnotatedTests="true"
backupStaticAttributes="false"
cacheTokens="false"
colors="always"
convertErrorsToExceptions="true"
convertNoticesToExceptions="false"
convertWarningsToExceptions="false"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
stopOnRisky="false"
verbose="true">
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src/AdoptableFramework</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="tests/code_coverage"
showUncoveredFiles="true"/>
</logging>
</phpunit>
我的文件夹结构如下:
src
--AdoptableFramework
----Core
------Database.php tests
--databaseTest.php
--unitTestSuite.php
这是我的 databaseTest.php 的样子:
<?php
namespace AdoptableFramework\Tests;
use AdoptableFramework\Core\Database;
use AdoptableFramework\Tests\unitTestSuite;
class DatabaseTest extends UnitTestSuite
{
public function testDatabase()
{
$database = new Database();
$this->assertEquals(null, $database);
}
}
?>
这是我的 Database.php AdoptableFramework/Core。
<?
/**
* @link https://www.pswebsolutions.co.uk/
* @author Paul Sonny Cook <paul.cook@pswebsolutions.co.uk>
* @copyright 2017 P S Web Solutions Ltd
* @version 1.0.0
* @package psAdoptables
**/
namespace AdoptableFramework\Core;
class Database
{
public function __construct($host = null, $username = null, $password = null, $database = null) {
$this->type = __CLASS__;
if ($host || $username || $password || $database) {
$this->connect($host, $username, $password, $database);
} else {
$this->connect();
}
}
public function connect($host = DB_HOST, $username = DB_USER, $password = DB_PASS, $database = DB_DATABASE)
{
return true;
}
}
?>
autoload_static.php class 映射:
我查看了我的 autoload_static.php 文件,可以看到:
'AdoptableFramework\Core\Database' => __DIR__ . '/../..' . '/src/AdoptableFramework/Core/Database.php',
'AdoptableFramework\Extend\ExtendDatabase' => __DIR__ . '/../..' . '/src/AdoptableFramework/Extend/ExtendDatabase.php',
'AdoptableFramework\Game' => __DIR__ . '/../..' . '/src/AdoptableFramework/Game.php',
'AdoptableFramework\Tests\DatabaseTest' => __DIR__ . '/../..' . '/tests/databaseTest.php',
'AdoptableFramework\Tests\UnitTestSuite' => __DIR__ . '/../..' . '/tests/unitTestSuite.php',
如有任何帮助,我们将不胜感激。
在我看来,您的 src/AdoptableFramework
目录不是必需的。您可以删除它并将所有文件移动到更高一级,或者试试这个 use 语句:
use AdoptableFramework\AdoptableFramework\Core\Database;
这一行 "AdoptableFramework\": "src/",
告诉自动加载器 src 文件夹中的任何 class 已经在 AdoptableFramework 命名空间中。例如,如果您以这种方式创建 class Foo
src/Foo.php
,您将以这种方式导入它:
use AdoptableFramework\Foo;
非常抱歉浪费了大家的时间!
php 文件正在作为文本加载,因为它需要
一旦我改变了一切,点击到位并开始工作!