Как использовать мой собственный автозагрузчик вместо Composer для модульного тестирования?

Что такое 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 и это мой результат теста,

введите описание изображения здесь

Это выглядит не так, как оригинал, но это не говорит о том, что это не удалось. Так что мой тест правильный?

Есть идеи?

1

Решение

Создайте свой собственный 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">
...
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector