Php composer包测试引导
我已经编写了一个包,作为开发过程的一部分,我想对它运行单元测试。这基本上意味着我需要一个引导文件来为我的包注册自动加载器 我看到的任何包都没有特定的引导文件,因此我不太了解开发人员是如何测试他们自己的包的 这是我的目录结构Php composer包测试引导,php,composer-php,autoload,bootstrapping,Php,Composer Php,Autoload,Bootstrapping,我已经编写了一个包,作为开发过程的一部分,我想对它运行单元测试。这基本上意味着我需要一个引导文件来为我的包注册自动加载器 我看到的任何包都没有特定的引导文件,因此我不太了解开发人员是如何测试他们自己的包的 这是我的目录结构 src .CompanyName ..PackageName ...Class 1 ...Class 2 tests .Class1Test .Class2Test composer.json phpunit.xml.dist 现在,如果在根目录中运行phpunit,所
src
.CompanyName
..PackageName
...Class 1
...Class 2
tests
.Class1Test
.Class2Test
composer.json
phpunit.xml.dist
现在,如果在根目录中运行phpunit,所有测试都会显示找不到\\CompanyName\\PackageName\\Class1。这是合法的,因为没有人把它们包括在内。所以问题是-我如何以及何时包括我的课程
查看一个示例,我可以看到他们依赖于vendor/autoload.php,但我没有这个vendor目录。我是否应该运行composer install来创建它?是的,您应该运行composer update。尝试并不有害,因为所有内容都放在/vendor/中,以后可以删除。好吧,我已经找到了答案。 Composer提供了我可以使用的自动加载器 在项目根目录中运行composer安装或composer更新。这将使用composers autoload.php文件创建供应商目录。 将供应商目录与composer.lock一起添加到.gitignore 在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>