2016-01-14 5 views
1

Прежде всего: речь идет не о SonarQube не отображение успешности блока тестирования. Есть много вопросов & ответов для этой темы, но они не были полезными.SonarQube не правильно отображает успешное тестирование блока

My setup: using SonarQube 5.2, вызванный Maven 3.x по телефону Jenkins 1.644 с проверками подлинности по умолчанию. И это результат SonarQube:

SonarQube output

Как вы можете видеть, что это показывает блок успеха тестирования для всех проектов корректно. Выбор проекта приводит нас к успешному пакетному тестированию. И на данный момент это становится странным. Например, пакет GUI: он говорит 8,3% успеха проекта, но 0,0% успеха теста пакета. Как это возможно?

Я искал причину в каталоге <project dir>/target/surefire-reports, на котором основан анализ SonarQube. Там вы можете увидеть три сгенерированные .xml-файлы/классы:

Surefire report files

Некоторые экстракт из файлов показывает нам:

Test set: xxx.gui.main.AppConfigurationTest 
Tests run: 4, Failures: 0, Errors: 4, Skipped: 0 

Test set: xxx.gui.main.ConfigurationHolderTest 
Tests run: 7, Failures: 0, Errors: 7, Skipped: 0 

Test set: xxx.gui.servlet.XxxHttpServletTest 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 

Выполнение некоторых рассчет дает 4 + 7 + 1 = 12 всего тесты и 1/12 (успех/итого) = 8,3%! Так вот, когда начинается успешный успех проекта.

Вопрос в том, почему не является классом xxx.gui.servlet.XxxHttpServletTest, отображаемым в SonarQube (с успешным испытанием на 100%, конечно)? У тебя есть идея?

ответ

2

Вопрос в том, почему это не класс xxx.gui.servlet.J2uHttpServletTest, отображаемый в SonarQube (с успешным испытанием на 100%, конечно)? У тебя есть идея?

Цель этого представления состоит в том, чтобы найти тестовые классы и пакеты тестов, которые имеют тесты с ошибкой/сбоем, и которые необходимо пересмотреть/исправить. Для этого отображаются только тестовые классы с успехом ниже 100%.

Отображение всех пакетов/тестовых классов со 100% -ным успехом создало бы визуальный шум. Это хороший/плохой подход? Ну, как только вы это понимаете, вы знаете, как интерпретировать эту информацию.

ИМХО, настоящий вопрос: «В чем смысл отображения% возраста успеха теста?» Наличие числа неудавшихся тестов на класс/пакет теста - это лучшая информация, чем% age, так как вы можете использовать ее для планирования действий.

Действительно, я не понимаю, почему знание о том, что тестовый класс с 60 тестами «50% сломан» (30 тестов для исправления) лучше, чем другой, с 10 тестами «60% сломан» ... (6 тестов для исправления.) Для меня оба сломаны и должны быть исправлены, указывают. Цифры должны только помочь мне определить усилия, которые необходимы для решения проблемы (то есть 36 тестов для исправления являются прозрачными, а не 50% и 60% ...)

Сторона примечания: тесты успеха% возраст - это «все или ничего». Успех теста 99.99% не является вариантом (ваша сборка интеграции должна завершиться неудачно, и ваш код не должен вообще входить в производство.)

+0

Хорошо, у меня было что-то в этом роде, но я не был уверен. Есть ли способ настроить, как SonarQube показывает успех теста?Я с вами, что не важно, сколько процентов тестов не удалось подробно, но я думаю, что это представление является средним. – Alex

+2

Я не думаю, что есть способ изменить это поведение. Тем не менее, вы по-прежнему можете проверить ошибки/сбои в развертке, а также пропустить единичные тесты (вы можете сделать это с 4.5.4 и 5.3, поэтому нет причин не в состоянии сделать это с помощью 5.2) – Kraal

Смежные вопросы