composer package testing bootstrap

女生的网名这么多〃 提交于 2019-12-19 18:58:18

问题


I've written a package and as part of the development proccess I want to run unit tests on it. This basically means I need a bootstrap file to register the autoloader for my package.

Any package I look at doesn't have a specific bootstrap file, thus I don't quite understand how the developers are testing their own packages.

This is my directory structure

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

tests
.Class1Test
.Class2Test

composer.json
phpunit.xml.dist

Now if I run phpunit inside the root directory, all my tests say \\CompanyName\\PackageName\\Class1 wasn't found. Which is legite, since nobody had them included. So the question is - How and when do I include my classes.


Looking at a random packages I can see they rely on vendor/autoload.php, but I don't have this vendor dir. Should I run composer install to have it created ?


回答1:


Well, I've figured the answer.
Composer provides it's own autoloader I could use.

  1. Run composer install or composer update in the project root. This will create the vendor dir with composers autoload.php file.
  2. Add vendor dir to .gitignore along with composer.lock
  3. In phpunit.xml.dist specify composer's autoloader as the bootstrap file

Example phpunit.xml.dist file

<?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>

Notice the bootstrap entry there.




回答2:


Yes you should run composer update. It is not harmful to try since everything is put into /vendor/ which you can later delete.



来源:https://stackoverflow.com/questions/13951804/composer-package-testing-bootstrap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!