Что такое bootstrap
для в phpunit.xml? Как я могу использовать свой собственный автозагрузчик вместо Composer для модульного тестирования?
Структура каталогов,
autoload/
Test/
vendor/
composer.json
phpunit.xml
Оригиналы:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./Test/</directory>
</testsuite>
</testsuites>
</phpunit>
composer.json,
{
"require": {
},
"require-dev": {
"phpunit/phpunit": "*"},
"autoload": {
"psr-0": {
"stats": ""}
}
}
Оригинальный тестовый результат,
Ниже мой собственный класс автозагрузки autoload/ClassLoader.php
,
<?php
namespace MyVendor\Autoload;
class ClassLoader
{
public function fetch( $directories )
{
spl_autoload_register( [$this, 'getClass'] );
}
private function getClass( $className )
{
....
}
}
мой phpunit.xml
, который я изменил bootsrap
в autoload/ClassLoader.php
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="autoload/ClassLoader.php">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./Test/</directory>
</testsuite>
</testsuites>
</phpunit>
Когда я бегу phpunit
в моем CMD и это мой результат теста,
Это выглядит не так, как оригинал, но это не говорит о том, что это не удалось. Так что мой тест правильный?
Есть идеи?
Создайте свой собственный bootstrap.php файл, и используйте spl_autoload_register для регистрации вашего автозагрузчика:
// External
spl_autoload_register('ClassLoader::getClass');
// Internal
function autoload($className)
{
....
}
spl_autoload_register('autoload');
Тогда позвони в свой phpunit.xml файл:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="bootstrap.php">
...
Других решений пока нет …