composer包测试bootstrap

时间:2012-12-19 11:49:25

标签: php composer-php autoload bootstrapping

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

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

这是我的目录结构

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

tests
.Class1Test
.Class2Test

composer.json
phpunit.xml.dist

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


查看random packages我可以看到他们依赖vendor/autoload.php,但我没有这个供应商目录。我应该运行composer install来创建吗?

2 个答案:

答案 0 :(得分:5)

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

  1. 在项目根目录中运行composer installcomposer update。这将使用作曲家vendor文件创建autoload.php目录。
  2. vendor目录添加到.gitignore以及composer.lock
  3. phpunit.xml.dist中指定composer的自动加载器作为引导程序文件
  4. 示例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>
    

    注意那里的bootstrap条目。

答案 1 :(得分:0)

是的,您应该运行composer update。这样做是没有害处的,因为所有内容都放入/ vendor /中,以后可以删除。