В тесте PHPUnit я пытаюсь получить все классы моего приложения Symfony, которые реализуют определенный интерфейс.Мой код приложения находится в пространстве имен App
, мои тесты - в Tests
.
. Этот код TestCase содержит только класс , если я его создаю (или "использую") it (*)1007 * операторов сверху не действуют):
namespace Tests\ReportPlaceholder;
use App\ReportPlaceholder\LimitModificationsPlaceholder;
use App\ReportPlaceholder\SimpleEvaluatePlaceholder;
use App\ReportPlaceholder\ReportPlaceholderInterface;
class MyTest extends KernelTestCase{
public function provider(){
new SimpleEvaluatePlaceholder(); // <-- if I comment this line, the class is *not* found
// also a usage of SimpleEvaluatePlaceholder::class suffices
return array_map(function($p) { return [$p]; },
array_filter(get_declared_classes(), function($className){
return in_array(ReportPlaceholderInterface::class, class_implements($className));}
));
}
}
provider
возвращает только в этом сценарии SimpleEvaluatePlaceholder
Мой composer.json равен
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
и phpunit.xml читает:
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.5/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="config/bootstrap.php"
verbose="true"
debug="false"
stopOnFailure="true">