6

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

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

这是我的目录结构

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

tests
.Class1Test
.Class2Test

composer.json
phpunit.xml.dist

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


查看随机包,我可以看到它们依赖vendor/autoload.php,但我没有这个供应商目录。我应该跑去composer install创建它吗?

4

2 回答 2

5

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

  1. 运行composer installcomposer update在项目根目录中。这将vendor使用作曲家autoload.php文件创建目录。
  2. vendor目录添加.gitignorecomposer.lock
  3. phpunit.xml.dist指定作曲家的自动加载器作为引导文件

示例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>

注意那里的引导条目。

于 2012-12-19T11:55:39.530 回答
0

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

于 2012-12-19T11:54:51.633 回答