Как импортировать отчеты PHPUnit с каскадными тестовыми наборами в Sonarqube? - PullRequest
0 голосов
/ 29 мая 2018

Наш отчет PHPUnit содержит каскадные тестовые наборы.Это не проблема для Sonarqube как таковая, но это происходит, если самый внутренний набор тестов не содержит атрибута файла.

Мы пишем тесты PHPUnit и используем провайдеров данных.Это приведет к каскадному тестированию в отчете о тестировании в стиле JUnit (флаг --log-junit):

<?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>

Как вы можете видеть, тестовый набор "Another \ Path \ XYZTest :: test4" создан, потому чтоиспользования поставщика данных.

Если Sonarqube анализирует этот отчет, он жалуется, что

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

, потому что у тестового набора "Another \ Path \ XYZTest :: test4" нет атрибута файла,Есть ли возможность

а) подавить создание дополнительного набора тестов для тестов провайдеров данных в отчете

или

б) сделать Sonarqube более устойчивым к такого родаотчеты?

Кстати: добавление атрибута файла в набор тестов «Another \ Path \ XYZTest :: test4» не решит проблему, так как Sonarqube завершится с ошибкой

"File can't be indexed twice"

.

...