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 ?
Well, I've figured the answer.
Composer provides it's own autoloader I could use.
composer install
or composer update
in the project root. This will create the vendor
dir with composers autoload.php
file.vendor
dir to .gitignore
along with composer.lock
phpunit.xml.dist
specify composer's autoloader as the bootstrap fileExample 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With