【问题标题】:composer package testing bootstrap作曲家包测试引导
【发布时间】:2012-12-06 18:30:08
【问题描述】:

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

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

这是我的目录结构

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 来创建它吗?

【问题讨论】:

    标签: php composer-php autoload bootstrapping


    【解决方案1】:

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

    1. 在项目根目录中运行composer installcomposer update。这将使用作曲家autoload.php 文件创建vendor 目录。
    2. vendor 目录添加到.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>
    

    注意那里的引导条目。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-06
        • 2018-05-11
        • 2018-01-22
        • 2013-05-26
        相关资源
        最近更新 更多