2015-11-03 58 views
11

我想單元測試一個UtilsClass類型的靜態方法,它返回一個。在這個方法裏面,我在它的構造函數中注入了一對String [],例如。 final Pair<String[], String[]> pair = new Pair<>(new String[] {"Hello", "World"}, new String[] {"£33", "£44"});並期望返回此對象。android.util.Pair在androidTest中保存String []作爲參數,但在(單元)中爲null測試

當我單元測試此方法時,我得到一個非空Pair對象,但其字段first = nullsecond = null。當我在Instrumentation-type測試中運行相同的測試代碼時,這些字段正確填充。我可以看到,在後一種情況下,輸入調試點的構造函數public Pair(F first, S second) {被輸入並且字段已設置,但未在單元測試中。

我在尋找解釋爲什麼會出現這種情況,如果我應該避免在代碼中首先將String[]作爲構造函數參數傳遞。

+2

單元測試可以使用基本上沒有操作的模擬對象。在調試時,您可以進入構造函數並查看實際發生的情況。有可能這裏使用的類的構造函數實際上是空的 – njzk2

+2

這似乎是這種情況!當我使用便捷方法'公共靜態創建(A a,B b){'而不是我得到了「」方法...沒有嘲笑。「」錯誤。在測試中轉換實際值會消除錯誤,但兩種創建方法中的值仍然爲空。 android.support.v4.util.Pair完全不受此影響。 – TomaszRykala

+1

是的,因爲支持圖書館,它是與你的apk捆綁在一起(所以它不能被單元測試嘲笑) – njzk2

回答

16

由於njk2和TomaszRykala發現,使用android.support.v4.util.Pair而不是android.util.Pair修復了這個問題。

相關問題