Использование JSONObject # toString в модульных тестах (Android Studio) - PullRequest
0 голосов
/ 14 октября 2019

Я хотел бы проверить, хорошо ли работает один из моих классов с объектом JSON. Для этого я решил предоставить ему JSONObject, используя среду модульного тестирования. Но он постоянно не давал желаемых результатов ... пока я не проверил поведение JSONObject в самом методе теста .

Это код:

    @Test
    public void checkJsonObject() {

        JSONObject obj;
        try {

            obj = new JSONObject();
            obj.put("front", "cat");
            obj.put("back", "chat");
            obj.put("bucket", 2);

            System.out.println("Object is " + (obj == null ? "" : "not") + " null");
            System.out.println("JSON content is: " + obj.toString());

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

Вот полученные результаты:

Object is not null
JSON content is: null

В то время как ожидаемый результат равен:

Object is not null
JSON content is: {  "front"     : "cat",
                    "back"      : "chat",
                    "bucket"    : 2
                }

(или аналогичный).

Итак, JSONObject не является нулевым. Но метод .toString () возвращает ноль.

Что мне не хватает в коде?

В случае, если это имеет значение, зависимости приложения содержат:

testImplementation 'junit:junit:4.12'
testImplementation 'androidx.test:core:1.0.0'
testImplementation 'org.mockito:mockito-core:1.10.19'

РЕДАКТИРОВАТЬ:

Спасибо, ребята, в комментариях. testImplementation "org.json:json:20190722" сделал работу. Может быть, кто-нибудь может дать ответ, как заставить его работать во всех случаях такого типа, так что мне не нужно искать, что не так в течение получаса ... Запуск тестов на телефоне? Включение конкретного пакета Android? Как это сделать? ... Или, по крайней мере, сделать что-то, поэтому Android Studio предупреждает, что какой-то (казалось бы) стандартный класс не реализован в тестах.

...