Php composer包测试引导

Php composer包测试引导,php,composer-php,autoload,bootstrapping,Php,Composer Php,Autoload,Bootstrapping,我已经编写了一个包,作为开发过程的一部分,我想对它运行单元测试。这基本上意味着我需要一个引导文件来为我的包注册自动加载器 我看到的任何包都没有特定的引导文件,因此我不太了解开发人员是如何测试他们自己的包的 这是我的目录结构 src .CompanyName ..PackageName ...Class 1 ...Class 2 tests .Class1Test .Class2Test composer.json phpunit.xml.dist 现在,如果在根目录中运行phpunit,所

我已经编写了一个包,作为开发过程的一部分,我想对它运行单元测试。这基本上意味着我需要一个引导文件来为我的包注册自动加载器

我看到的任何包都没有特定的引导文件,因此我不太了解开发人员是如何测试他们自己的包的

这是我的目录结构

src
.CompanyName
..PackageName
...Class 1
...Class 2

tests
.Class1Test
.Class2Test

composer.json
phpunit.xml.dist
现在,如果在根目录中运行phpunit,所有测试都会显示找不到\\CompanyName\\PackageName\\Class1。这是合法的,因为没有人把它们包括在内。所以问题是-我如何以及何时包括我的课程


查看一个示例,我可以看到他们依赖于vendor/autoload.php,但我没有这个vendor目录。我是否应该运行composer install来创建它?

是的,您应该运行composer update。尝试并不有害,因为所有内容都放在/vendor/中,以后可以删除。

好吧,我已经找到了答案。 Composer提供了我可以使用的自动加载器

在项目根目录中运行composer安装或composer更新。这将使用composers autoload.php文件创建供应商目录。 将供应商目录与composer.lock一起添加到.gitignore 在phpunit.xml.dist中,指定composer的自动加载程序作为引导文件 示例phpunit.xml.dist文件

注意这里的引导条目

<?xml version="1.0" encoding="UTF-8"?>

<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
        >

    <testsuites>
        <testsuite name="Your package's test suit">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>

</phpunit>