2016-04-08 43 views
0

我有兩個clover.db文件;這些clover.db文件是在兩個不同的時間創建的;但底層的(儀表化的)代碼根本沒有改變;我只編譯了兩遍。創建了兩個單獨的WAR文件;並將這兩個單獨的WAR文件和clover.db複製到兩個單獨的服務器。當我嘗試做一個三葉草時:merge;由此產生的三葉草覆蓋率列在0%

對這兩個部署的服務器執行不同的測試後,並收集了clover.db *文件。

我使用mvn clover2:aggregate clover2:clover <options>運行maven並獲得了爲每個單獨的服務器生成的兩套三葉草覆蓋文件。他們導致一些覆蓋率(在這種情況下,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.dbmvn期待的clover.db文件是位置(和其重命名爲clover.db,因爲這是什麼mvn預計)。這是當我運行聚合命令。這導致顯示0%的覆蓋率(文件生成,但絕對沒有指出覆蓋)。

正如你所看到的附加pix,文件正在創建正確,它只是沒有實際找到任何覆蓋。第一張照片是當我做#1:

Result from #1

而第二個是當我這樣做#2:

Result from #2

希望我已經解釋了我現在面臨的問題;但請如果你認爲你可以幫忙,但不明白我說的問題。這令我煩惱!

回答

1

第一點合併查找Clover數據庫。然後它會查找與數據庫匹配的覆蓋文件,並將db文件名與coverage文件名相匹配。所以,例如,如果數據庫名爲clover.db它會找到所有與該名稱匹配的覆蓋率文件,如三葉草。DB *(或類比cloverdatabase - >cloverdatabase * < - 覆蓋文件)

在步驟一個四葉草最有可能找到的所有文件覆蓋,但那些從第二個服務器複製的不匹配clover.db ,所以被丟棄。 (Clover保存有關儀器和測試執行會話的信息,其中一些元數據必須匹配)

在第二步重命名第二個數據庫時,所有覆蓋率文件都與第一個數據庫相匹配(因爲名稱衝突),然後其中一半是由於元數據不匹配而丟棄(與第一步相同的機制)。而且由於您已經重命名了第二個數據庫,Clover沒有找到該數據庫的任何覆蓋文件。

我不能100%在這裏,但它可能是不夠的只是重命名文件你不能簡單地重命名文件。

我建議生成具有唯一名稱的數據庫,例如cloverWAR1.db,cloverWAR2.db。然後運行測試,將dbs複製到報告機器進行聚合和生成報告。您應該使用cloverDatabase財產,like this。在測試運行時期間,您可能必須使用initstring屬性指定db的位置。這是因爲它不是默認名稱,Clover將無法自動找到它。

相關問題