composer包测试bootstrap

Ale*_*lex 6 php bootstrapping autoload composer-php

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

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

这是我的目录结构

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

tests
.Class1Test
.Class2Test

composer.json
phpunit.xml.dist
Run Code Online (Sandbox Code Playgroud)

现在,如果我phpunit在根目录中运行,我的所有测试\\CompanyName\\PackageName\\Class1都没有找到.哪个是精英,因为没有人包括它们.所以问题是 - 我如何以及何时包括我的课程.


看一下随机包我可以看到他们依赖vendor/autoload.php,但我没有这个供应商的目录.我应该跑去composer install创造吗?

Ale*_*lex 5

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

  1. 运行composer installcomposer update在项目根目录中.这将创建vendor带有composers autoload.php文件的目录.
  2. 添加vendordir .gitignore以及composer.lock
  3. 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>
Run Code Online (Sandbox Code Playgroud)

注意那里的bootstrap条目.