我们的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 "dataset1"" 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 "dataset2"" 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"
错误。