Представьте себе мультимодульный проект Maven, такой как следующий:
parent
+- core
+- main
main
зависит от модуля core
.
Теперь я пишу класс CoreClass
in core
, двумя способами: method1()
и method2()
.В core
тестах я пишу тестовый класс, который будет проверять только CoreClass.method1()
.
Если я запустил инструмент покрытия (в моем случае Cobertura, используя mvn sonar:sonar
), я обнаружу, что получаю 50% тестового покрытия на CoreClass
(если мы представим, что оба метода имеют одинаковую длину).
До сих пор все в порядке.
Теперь в main
проект, я пишу тестовый класс, который будет тестировать CoreClass.method2()
.Так что обычно , я ожидаю, что при выполнении анализа всего проекта будет 100% покрытия линии на CoreClass
.
Однако я все еще получаюмой 50% .
Я понимаю, что это комплексное поведение.Действительно, Cobertura будет использовать CoreClass
для анализа покрытия только во время выполнения тестов на модуле core
, а не на main
.Это объясняет, почему у меня все еще есть 50% покрытия кода.
Однако мой вопрос заключается в том, чтобы узнать, есть ли способ получить покрытие real кода CoreClass
когда я запускаю тесты на всех моих модулях.
Спасибо!
ps: Я знаю, что в идеальном мире это не касаетсямодуль main
для проверки классов core
.Но, как вы, возможно, знаете, мы не в идеальном мире: o)
Техническая информация: Java 1.6, JUnit 4.8.1, Maven 2.0.9 (будет обновлен до 2.2.1 скоро, но я не думаю, что это действительно имеет значение), сонар 2.8