2014-05-08 98 views
1

雖然不是一個真正的問題,但如果有一個設置可以改變這一點,那將會很好。是否有可能讓Jacoco停止抱怨缺少「其他」陳述?

基本上,我正在處理一堆表單字段,要麼上傳要麼他們沒有。

我檢查上傳的字段是否爲空,如果不是,我會用它做一些事情。

如果字段 null ...則什麼也沒有。沒有任何反應,它可以保持爲空。這是爲了允許某些字段爲空的數據庫插入。

下面是一些僞代碼:

if(randomfield != null) { 
    //do something with randomField before insertion in to the DB. 
} 

Jacoco不斷給我,它不能檢查其他可能的消息,這意味着它在抱怨那裏是沒有else語句。但是永遠不會有一個。是否有可能讓Jacoco停止檢查,如果是這樣,我可以在哪裏讀到它?谷歌搜索沒有幫助。

回答

2

Jacoco是一個覆蓋工具。它檢查代碼的每個可能的分支是否被覆蓋。它並不抱怨沒有其他聲明。它抱怨的是,你從來沒有執行randomField爲空的代碼。

如果randomField爲null,那麼其他代碼可能會中斷。你的測試沒有測試這種可能性,這就是jacoco警告你的。這裏有一個例子:

String foo = null; 
if(randomfield != null) { 
    foo = randomField; 
} 
System.out.println(foo.toLowerCase()); 

如果測試與randomField"hello"的代碼,一切都會好的。但是,如果randomField爲空,那麼這將導致不希望的NullPointerException。這是一個可以通過使用null randomField測試代碼來檢測到的錯誤。既然你沒有那樣做,jacoco就在抱怨。

+0

好吧,但正如我所說:如果該字段爲空,則不會發生任何事情。它可以插入到數據庫爲空(我可能應該已經解釋過了),沒有問題,那就是所有這些將會發生的事情。所以我有兩種情況。在它不是空的地方,我必須在它插入之前用它做一些事情,並且在插入它之前它不需要發生任何額外的事情。這是唯一可能的兩個事件。 Jacoco抱怨說沒有檢查第二種可能性,但那是因爲沒有必要使用一個。所以我希望Jacoco停止告訴我這件事。 – KdgDev

+1

使其停止抱怨的最好方法是編寫一個測試,其中randomField爲null,它檢查向數據庫插入null是否正常工作。或者認爲這不值得測試,並停止關注該課程的分支機構覆蓋範圍。無論如何,將目標設定爲100%是不現實的。 –

+0

我知道,但我有時間在我手上,我想知道這件事。 – KdgDev