Наш отчет 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 "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>
Как вы можете видеть, тестовый набор "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"
.