在 android 應用程式上,具有 java 功能
JSONObject addToJson(@NonNull JSONObject jsonObject, @NonNull String key, boolean value){
try {
jsonObject.put(key, value);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}
測驗代碼,它在呼叫模擬 jsonObject.put(key, value) 時拋出并且作業正常:
@Test
public void test_addToJson() throws JSONException {
JSONObject jsonObject = Mockito.spy(new JSONObject());
Mockito.when(jsonObject.put(anyString(), anyBoolean())).thenThrow(new JSONException("!!! test forced exception"));
JSONObject outputObject = addToJson(jsonObject, "null", true);
assertEquals("jsonobject length should match", 0, outputObject.length());
}
轉換為 kotlin 后
fun addToJson(jsonObject: JSONObject, key: String, value: Boolean?): JSONObject {
try {
jsonObject.put(key, value)
} catch (e: JSONException) {
e.printStackTrace()
}
return jsonObject
}
測驗失敗,沒有拋出例外。
uj5u.com熱心網友回復:
Java 代碼將原始型別boolean用于value. Kotlin 版本正在使用可空型別Boolean?,這似乎是不必要的,因為該引數永遠不會出現null在 Java 版本中。
對可空型別的更改可能會導致anyBoolean匹配器失敗。您可以嘗試切換到不可為空的型別Boolean,或者繼續使用Boolean?并將anyBoolean匹配器anyOrNull從 mockito-kotlin更改為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/409898.html
標籤:
上一篇:如何通過等待完成來管理MainActivity中的協程?
下一篇:具有所需介面的通用列舉型別引數
