我希望在一个PhpUnit
存储库中进行git
次测试,并在另一个存储库中进行测试。 问:我可以进行代码覆盖吗?
原则上,这对你来说可能听起来很奇怪。为了防止“你不应该这样做”或“在同一个回购中进行测试”的答案,让我给出背景。
通常PhpUnit用于运行单元测试。
如果我们严格遵守纯DDD ,基于symfony的PHP项目应该基于两个不同的存储库:
除了单元测试之外,我曾经使用PhpUnit作为测试运行器来运行Selenium的功能测试。
当我们没有那么纯粹的DDD时,我们拥有99%的人口,模型在同一个仓库中而不是应用程序,只是在一个单独的目录中,live很容易。这就是DDD“作为一种方法”,即使我们在任何捆绑之外都有模型,因为模型是完全独立的,而且真的应该生活在一个单独的回购中。
相反,功能测试,不属于模型。如果应用程序是Web应用程序,则功能测试可以是selenium;如果应用程序是REST-API,则可以是某种JSON解析器;如果应用程序是命令行界面,则可以是命令测试器。
... SOOOO
当您在同一个存储库/tests
中有/src
和myNiceProject-ModelAndApplication.git
时,很容易拥有像这样的conig文件。
<phpunit bootstrap="vendor/autoload.php" colors="true">
<testsuites>
<testsuite name="myNiceProject-ModelAndApplication">
<directory>tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src</directory>
</whitelist>
</filter>
</phpunit>
相反,当您在存储库myNiceProject-Application.git
和存储库myNiceProject-Model.git
中的模型中进行功能测试时,您希望“监视”通过功能测试执行的模型的百分比。应用程序,因为业务规则说“功能测试应确保覆盖90%包含业务逻辑的代码行”,然后......
问:如何在测试所在的repo A中设置配置,以对驻留在repo B中的代码进行测试覆盖?
这种模式的另一个例子是Q.A.需要对编码器已经测试过的内容进行双重测试的部门。他们“不”依赖自动包含的单元测试,并希望应用另一个独立的测试套件。
另外,Q.A。不应写入主回购,不要污染编码人员的工作。
答案 0 :(得分:1)
将要覆盖的目录列入白名单。
fizz/
├── composer.json
├── phpunit.xml.dist
├── src
│ └── Fizz.php
└── test
└── FizzTest.php
buzz/
├── composer.json
├── phpunit.xml.dist
├── src
│ └── Buzz.php
└── test
└── BuzzTest.php
的香味/ phpunit.xml.dist
<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
<testsuites>
<testsuite name="unit">
<directory>test</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory>src</directory>
<directory>./../buzz/src</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="build/coverage" />
</logging>
</phpunit>
以上配置包括对buzz项目src
目录的覆盖。
也可以使用绝对路径。