为phpUnit 7(远程)覆盖范围配置phpStorm和XML

时间:2018-10-25 20:32:55

标签: phpunit phpstorm code-coverage

我正在用phpUnit玩一个星期。

我将逐步在以下位置提供文档

这时我处于代码覆盖率。我设法生成了小的测试-coverage-html (通过控制台)。我希望一切都可以通过phpStorm运行。

我正在努力寻找包含路径。我可以在控制台中看到错误,但是这些根本没有帮助。

这是我的控制台输出的样子:

enter image description here

这是我在此文件中唯一使用的地方

enter image description here

这是用于测试和显示(在控制台中)文件的文件夹结构的样子

|- dir:Boostrap
|- dir:Coverage
|- dir:Database
|- dir:Interfaces
|- dir:Methods
|---- file: BasicCalculations.php (line 3 inclusion)
|- dir:Tests
|---- file:DataDisplayingTest.php (file that I'm testing)
|---- dir:Data Providers
|-------- file:BasicCalculationDataProvider.php (line 4 inclusion)

我尝试过的/到目前为止所做的

这是我的phpunit.xml的样子:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="phpunit.xsd"
         cacheResult="true"
         verbose="true">

    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory>/var/www/html/phpUnit</directory>
        </whitelist>
    </filter>

    <php>
         <includePath>/var/www/html/phpUnit</includePath>
    </php>
</phpunit>

我玩过directory / incluedPath,尝试了类似的变体:

 - /var/www/html/phpUnit
 - /var/www/html/phpUnit/
 - .
 - ./
 - <file>pointed/tested/file/here/</file>

我正在使用:

  • phpStorm
  • phpUnit 7.x远程
  • php 7.x远程
  • xdebug远程

更清楚:

  • 我在做什么错了?
  • 如何处理夹杂物问题?
  • 是什么原因导致所有这些包含路径问题?

1 个答案:

答案 0 :(得分:0)

我已经设法解决了我遇到的所有问题。我已经使用了上面指向的链接中提供的一些信息。

首先

包含错误

PhpUnit xml使用指令includePath,在我的情况下,它看起来像这样:

<php>
      <includePath>/var/www/html/phpUnit</includePath>
</php>

通常,在这一点上问题在于…xml文件中包含includePath。此属性更改包含路径。

所以可以说您拥有这样的项目结构:

- dir: Classes
–- dir: A
–-- file: A.php class: A (extends B)
–- dir: B
–-- file: B.pphp class: B
-file: index.php

因此,从文件A.php的外观来看,您需要像这样包含B.php: ../ B / B.php

因为工作目录是

/var/www/html/phpUnit/Classes/

但是,既然您已经设置了包含路径:

var/www/html/phpUnit

文件A,尝试从phpUnit文件夹的角度加载文件B,有点在以下位置查找文件:

var/www/html

没有此指令不能解决问题,因为phpUnit似乎使用其他默认路径。

我通过更改在项目中包含文件的方式解决了这个问题:

只需使用:

include_once '../Interfaces/BasicCalculationsInterface.php';

我已经开始这样做:

include_once __DIR__.'/../Interfaces/BasicCalculationsInterface.php';

这种方式:

  • 单个文件测试正常
  • 项目本身运行正常
  • phpStorm检测包含文件中的方法,类等
  • 小组测试也很好

写入文件index.html权限被拒绝

我也偶然发现了这个问题。这实际上是某种phpStorm问题,我不知道该如何永久解决,但我已经处理了可以运行所有测试的xml文件。

基本上phpStorm为执行的测试添加了一些默认配置。

在菜单中转到

运行/编辑配置

看看字段 Test Runner选项

就我而言,添加了phpStorm

--coverage-html /

一切都很好,但是我在笔记本电脑上使用Ubuntu作为远程主机,而phpStorm尝试通过这种方式在 / 目录中创建文件,该文件没有写权限。将其更改为某些可写文件夹或删除此行即可解决问题。

仅此而已,这就是我的xml文件的外观(以防万一有人想看看的东西)

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="phpunit.xsd"
         verbose="true">
    <filter>
        <whitelist addUncoveredFilesFromWhitelist="false">
            <directory suffix=".php">/var/www/html/phpUnit</directory>
        </whitelist>
    </filter>

    <logging>
        <log type="coverage-clover" target="/var/www/html/phpunit/coverage.xml" lowUpperBound="35" highLowerBound="70"/>
        <log type="coverage-html" target="/var/www/html/phpUnit/phpStormCoverageTest" lowUpperBound="35"
             highLowerBound="70"/>
    </logging>

    <testsuites>
        <testsuite name="allTests">
            <directory suffix="Test.php">/var/www/html/phpUnit/Tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

html / phpStorm覆盖范围概述 enter image description here

enter image description here