gpt4 book ai didi

selenium - 如何让 phpunit 在外部存储库上进行代码覆盖?

转载 作者:行者123 更新时间:2023-12-04 17:56:55 27 4
gpt4 key购买 nike

问题

我想在一个 git 存储库中进行 PhpUnit 测试,而在另一个存储库中测试代码。 问:我可以进行代码覆盖吗?

原则上,这对您来说可能听起来很奇怪。为了防止出现“你不应该这样做”或“测试存在于同一个仓库中”的答案,让我给出上下文。

上下文

  1. 通常 PhpUnit 用于运行单元测试。

  2. 如果我们严格遵守纯 DDD,基于 symfony 的 PHP 项目应该基于两个不同的存储库:

    • 一个模型,纯 PHP 类,经过单元测试,完全没有引用 symfonay;
    • 另一个“应用程序”使用 symfony,并通过 composer 将模型引入供应商,供公共(public) PHP API 使用。
  3. 除了单元测试之外,我还使用 PhpUnit 作为测试运行器来使用 Selenium 运行功能测试。

  4. 当我们不那么纯粹地进行 DDD 时,作为 99% 的人,模型与应用程序在同一个 repo 中,只是在一个单独的目录中,生活很容易。这就是 DDD“作为一种方法”,即使我们的模型不在任何 bundle 之外,因为该模型是完全独立的并且确实应该存在于单独的存储库中。

  5. 相反,功能测试不属于模型。如果应用程序是 Web 应用程序,则功能测试可能是 selenium;如果应用程序是 REST-API,则功能测试可能是某种 JSON 解析器;如果应用程序是命令行界面,则可能是命令测试器。

    <

太棒了...

当你在同一个存储库 myNiceProject-ModelAndApplication.git 中有 /tests/src 时,很容易有一个像这样的配置文件这个。

<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% 的包含业务逻辑的代码行”,那么...

问:如何在测试所在的存储库 A 中设置配置,以对存储库 B 中的代码进行测试覆盖?

旁注

这种模式的另一种情况是问答。需要对编码人员已经测试过的内容进行双重测试的部门。他们“不”依赖于自动包含的单元测试,而是希望应用另一个独立的测试套件。

此外,Q.A.不应写入主仓库,以免污染编码人员的工作。

最佳答案

将您要覆盖的目录列入白名单。

fizz/
├── composer.json
├── phpunit.xml.dist
├── src
│   └── Fizz.php
└── test
└── FizzTest.php
buzz/
├── composer.json
├── phpunit.xml.dist
├── src
│   └── Buzz.php
└── test
└── BuzzTest.php

fizz/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目录的覆盖。

也可以使用绝对路径。

关于selenium - 如何让 phpunit 在外部存储库上进行代码覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39789680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com