### Question:
JsonUtil { public static void put( @NonNull JSONObject json, @NonNull String field, @NonNull int value) { checkNotNull(json, "json must not be null"); checkNotNull(field, "field must not be null"); checkNotNull(value, "value must not be null"); try { json.put(field, value); } catch (JSONException ex) { throw new IllegalStateException("JSONException thrown in violation of contract, ex"); } } private  JsonUtil(); static void put(
            @NonNull JSONObject json,
            @NonNull String field,
            @NonNull int value); static void put(
            @NonNull JSONObject json,
            @NonNull String field,
            @NonNull String value); static void put(
            @NonNull JSONObject json,
            @NonNull String field,
            @NonNull JSONArray value); static void put(
            @NonNull JSONObject json,
            @NonNull String field,
            @NonNull JSONObject value); static void putIfNotNull(
            @NonNull JSONObject json,
            @NonNull String field,
            @Nullable String value); static void putIfNotNull(
            @NonNull JSONObject json,
            @NonNull String field,
            @Nullable Uri value); static void putIfNotNull(
            @NonNull JSONObject json,
            @NonNull String field,
            @Nullable Long value); static void putIfNotNull(
            @NonNull JSONObject json,
            @NonNull String field,
            @Nullable JSONObject value); @NonNull static String getString(
            @NonNull JSONObject json,
            @NonNull String field); static String getStringIfDefined(
            @NonNull JSONObject json,
            @NonNull String field); static List<String> getStringListIfDefined(@NonNull JSONObject json,
                                                      @NonNull String field); static Uri getUri(
            @NonNull JSONObject json,
            @NonNull String field); @Nullable static Uri getUriIfDefined(
            @NonNull JSONObject json,
            @NonNull String field); @Nullable static Long getLongIfDefined(
            @NonNull JSONObject json,
            @NonNull String field); @NonNull static List<String> getStringList(
            @NonNull JSONObject json,
            @NonNull String field); @NonNull static List<Uri> getUriList(
            @NonNull JSONObject json,
            @NonNull String field); @NonNull static Map<String, String> getStringMap(JSONObject json, String field); @NonNull static List<String> toStringList(@Nullable JSONArray jsonArray); @NonNull static List<Uri> toUriList(@Nullable JSONArray jsonArray); @NonNull static JSONArray toJsonArray(@NonNull Iterable<?> objects); @NonNull static JSONObject mapToJsonObject(@NonNull Map<String, String> map); static T get(JSONObject json, Field<T> field); static List<T> get(JSONObject json, ListField<T> field);  }### Answer:
@Test public void testPut() throws Exception { JsonUtil.put(mJson, TEST_KEY, TEST_STRING); verify(mJson).put(TEST_KEY, TEST_STRING); }
@Test(expected = RuntimeException.class) public void testPut_JsonException() throws Exception { when(mJson.put(TEST_KEY, TEST_STRING)).thenThrow(new JSONException((String)null)); JsonUtil.put(mJson, TEST_KEY, TEST_STRING); }
@Test public void testPutArray() throws Exception { JsonUtil.put(mJson, TEST_KEY, TEST_ARRAY); verify(mJson).put(TEST_KEY, TEST_ARRAY); }
@Test(expected = RuntimeException.class) public void testPutArray_JsonException() throws Exception { when(mJson.put(TEST_KEY, TEST_ARRAY)).thenThrow(new JSONException((String)null)); JsonUtil.put(mJson, TEST_KEY, TEST_ARRAY); }
@Test(expected = NullPointerException.class) public void testPutJsonObject_nullJson() throws Exception { JsonUtil.put(null, TEST_KEY, TEST_JSON); }
@Test(expected = NullPointerException.class) public void testPutJsonObject_nullKey() throws Exception { JsonUtil.put(mRealJson, null, TEST_JSON); }