如何将带有级联测试套件的PHPUnit报告导入Sonarqube?

时间:2018-05-29 13:43:18

标签: sonarqube phpunit

我们的PHPUnit报告包含级联测试套件。这对于Sonarqube本身来说不是问题,但如果最内部的测试套件不包含文件属性,它就会成为问题。

我们正在编写PHPUnit测试并正在使用数据提供程序。这将导致JUnit风格的测试报告(--log-junit Flag)中的级联测试套件:

<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
  <testsuite name="" tests="5" assertions="64" errors="0" failures="0" skipped="0" time="14.915989">
    <testsuite name="Unit Tests" tests="5" assertions="64" errors="0" failures="0" skipped="0" time="1.486124">
      <testsuite name="Some\Path\ABCTest" file="/home/jenkins/some/path/ABCTest.php" tests="2" assertions="40" errors="0" failures="0" skipped="0" time="1.311815">
        <testcase name="test1" class="Some\Path\ABCTest" classname="Some.Path.ABCTest" file="/home/jenkins/some/path/ABCTest.php" line="346" assertions="27" time="1.108117"/>
        <testcase name="test2" class="Some\Path\ABCTest" classname="Some.Path.ABCTest" file="/home/jenkins/some/path/ABCTest.php" line="454" assertions="1" time="0.036422"/>
      </testsuite>
      <testsuite name="Another\Path\XYZTest" file="/home/jenkins/another/path/XYZTest.php" tests="3" assertions="24" errors="0" failures="0" skipped="0" time="0.174309">
        <testcase name="test3" class="Another\Path\XYZTest" classname="Another.Path.XYZTest" file="/home/jenkins/another/path/XYZTest.php" line="202" assertions="3" time="0.006831"/>
        <testsuite name="Another\Path\XYZTest::test4" tests="2" assertions="15" errors="0" failures="0" skipped="0" time="0.070885">
          <testcase name="test4 with data set &quot;dataset1&quot;" class="Another\Path\XYZTest" classname="Another.Path.XYZTest" file="/home/jenkins/another/path/XYZTest.php" line="259" assertions="5" time="0.046686"/>
          <testcase name="test4 with data set &quot;dataset2&quot;" class="Another\Path\XYZTest" classname="Another.Path.XYZTest" file="/home/jenkins/another/path/XYZTest.php" line="259" assertions="5" time="0.010488"/>
        </testsuite>
      </testsuite>
    </testsuite>
  </testsuite>
</testsuites>

正如你可以看到测试套件&#34;另一个\ Path \ XYZTest :: test4&#34;是因为使用了数据提供程序而创建的。

如果Sonarqube正在分析这份报告,那就是抱怨

"Test cases must always be descendants of a file-based suite, skipping [...]"

因为testuite&#34;另一个\ Path \ XYZTest :: test4&#34;没有文件属性。

是否有可能?

a)在报告中禁止为数据提供者测试生成额外的测试套件

b)让Sonarqube对这类报道更加强大吗?

BTW:将文件添加到测试套件&#34;另一个\ Path \ XYZTest :: test4&#34;不能解决问题,因为Sonarqube失败了

"File can't be indexed twice"

错误。

0 个答案:

没有答案