Это немного хакерски, но я использую подход, использующий модифицированную версию плагина Maven cobertura (которая доступна из их репозитория ). Он предоставляет цель cobertura: generate-report, так что вы можете вставить cobertura: instrument и cobertura: generate-report в свой жизненный цикл до и после запуска тестов, соответственно. Это даст вам необходимые данные покрытия без дублирования выполнения / записи теста.
Основная проблема заключается в том, что все плагины Maven без клеверного покрытия, с которыми я сталкивался, построены вокруг идеи запуска тестов с покрытием отдельно от основного выполнения теста в жизненном цикле Maven. Это, очевидно, приводит к двум наборам тестовых выполнений. Если вы используете проект вольным стилем, вы получите только один набор записанных тестов (поскольку, даже при двух тестовых выполнениях, есть только одна копия тестового вывода), но тип проекта Maven фактически перехватывает выполнения Majo mojo и записывает результаты теста / результаты во время выполнения теста, а не все сразу в конце сборки, как это делают проекты в стиле фристайл. Это имеет много преимуществ, но также имеет и довольно явный недостаток, заключающийся в том, что один тест, выполненный дважды, считается как два теста.
Тем не менее, хотя я видел веские аргументы в пользу выполнения тестов как для неинструментированного, так и для инструментированного кода, я предпочитаю запускать тесты только один раз, против инструментального кода - не только из-за проблем Maven / Hudson, но потому если у вас есть тесты, которые занимают 45 минут, то откровенно глупо запускать их дважды, чтобы получить тот же результат.