2011-10-21 57 views
3

我們最近將代碼庫從2005版升級到最新版本的hibernate。休眠升級後代碼覆蓋率明顯下降 - getter和setter未覆蓋 - 有什麼想法?

因此,我們看到我們的許多軟件包中的代碼覆蓋率顯着降低。這些包幾乎完全映射到hibernate對象的POJO,差別似乎在getter和setter的覆蓋範圍內。這些對象中的大多數不是直接進行單元測試,因此以前的覆蓋大部分來自它們在某些集成測試中的使用,從而導致hibernate擊中這些獲取者和設置者。

有沒有人看到類似的事情發生? hibernate在填充那些可以解釋這些對象的方法方面是否發生了變化?

大多數字段設置爲lazy = false,因此可能沒有問題。

我們正在使用testng,cobertura和jdk 1.6。

回答

1

有人改變了xml中的某些內容以改變字段的訪問權限,例如,

<property name="xxx" ... access="field"/> 

或全球喜歡嗎?

<hibernate-mapping ... default-access="field"> 

默認情況下,hibernate的訪問被設置爲屬性,所以應該使用提供它們的訪問器。

+1

這是我正在調查的路線,但它似乎並非如此,在整個項目代碼庫中沒有引用默認訪問權限,所以它可能總是被設置爲默認值(這是你所說的屬性) –

2

我不是專家,但也許休眠的最新版本在類的字段注入值,而以前的版本使用getter和setter ...

你在哪裏把你的註解?

上的字段

@Id private Long id; 

或方法?

@Id public Long getId() { return id; } 
+0

不確定你的意思。但是我們不使用註釋,使用.hbm映射文件。所有職業都有getter/setter。 –

+1

Hibernate可以使用這兩個字段或屬性。 (我以爲你使用了註釋,而不是映射文件)。搜索此頁「訪問」:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html – Matteo