2016-04-08 13 views
0

У меня есть два файла clover.db; эти файлы clover.db были созданы в два разных раза; но базовый (инструментальный) код не изменился вообще; Я просто скомпилировал его дважды; создал два отдельных файла WAR; и скопировали эти два отдельных файла WAR и clover.db на два отдельных сервера.Когда я пытаюсь сделать клевер: merge; итоговое покрытие клевера указано в 0%

После выполнения различных тестов против обоих этих развернутых серверов; и собрал файлы clover.db *.

Я побежал maven используя mvn clover2:aggregate clover2:clover <options> и получил оба набора файлов покрытия клевера, сгенерированных для каждого отдельного сервера. Они приводят к некоторым процентам покрытия (в данном случае 14% и 19%)

Теперь я хочу объединить эти два в один отчет; но я не могу понять, как это сделать; как каждый из способов, которые я пытаюсь сделать (перечисленные ниже), я получаю либо покрытие 0%, либо покрытие с одного сервера (код метрики для клевера заполнен правильно).

Вот различные способы, которые я пробовал и результат:

1) Скопировать clover.db с одного сервера, и clover.db* файлы с обоих серверов, и запустить mvn clover2:aggregate clover2:clover <options>. Это приводит к отображению только покрытия с одного из двух серверов (в зависимости от того, к которому принадлежит начальный clover.db).

2) Копирование clover.db с обоих серверов в уникальное место (переименование .db-файла на что-то уникальное). Запуск mvn clover2:aggregate clover2:merge <options>. Это приводит к объединенному .db-файлу (из того, что я могу сказать). Затем я использую этот объединенный .db-файл как файл clover.db; скопируйте в файлы clover.db* с обоих серверов и запустите mvn clover2:aggregate clover2:clover <options>. Я использую следующие в файле pom.xml для обозначения этого слияния:

<cloverMergeDatabase>/tmp/clover/Merged/newMerge.db</cloverMergeDatabase> 
<baseDir>/tmp/clover/Merged</baseDir> 

После этого, я копирую вновь creted newMerge.db в том месте, где mvn ожидает, что файл clover.db быть (и переименовать его в clover.db, так что какой mvn ждем). Это когда я запускаю команду агрегата. Это приводит к отображению 0% -го охвата (файлы генерируются, но абсолютно никакого покрытия не указано).

Как вы можете видеть при прикрепленном pix, файлы создаются правильно, но на самом деле они не находят никакого покрытия. Первая картина, когда я делаю # 1:

Result from #1

И второй, когда я # 2:

Result from #2

Надеюсь, я объяснил этот вопрос я обращенную; но, пожалуйста, если вы думаете, что можете помочь, но не понимаете, что я сказал, задавайте вопросы. Меня это раздражает!

ответ

1

Слияние в первой точке ищет базы данных Clover. Затем он ищет файлы соответствия, соответствующие базе данных, и соответствует имени файла db с именем файла покрытия. Так, например, если db называется clover.db, он найдет все файлы покрытия, соответствующие этому имени, например, клевер.дБ * (или аналогический cloverdatabase ->cloverdatabase * < - файлы покрытие)

На первом шаге Clover, скорее всего, находит все файлы покрытие, но, скопированные из второго сервера не соответствует clover.db , поэтому отбрасываются. (Клевер сохраняет информацию об инструментах и ​​сеансах выполнения теста. Некоторые метаданные должны совпадать)

На втором шаге, когда вы переименовываете вторую базу данных, все файлы покрытия сопоставляются с первой (с момента столкновения имен), а затем половина из них отбрасывается, потому что метаданные не совпадают (тот же механизм, что и на первом этапе). И поскольку вы переименовали вторую БД, Clover не находит никаких файлов покрытия для этой БД.

Я не могу быть на 100% здесь, но может быть недостаточно просто переименовать файлы. Вы не можете просто переименовывать файлы.

Я бы предложил создавать базы данных с уникальными именами, например cloverWAR1.db, cloverWAR2.db. А затем запустите тесты, скопируйте dbs на машину отчетности для агрегации и создания отчетов. Вы должны использовать cloverDatabase property, like this. Во время тестового запуска вам, вероятно, придется указать местоположение db с помощью свойства initstring. Это потому, что это не имя по умолчанию, и Clover не сможет найти его автоматически.