Какие все юнит-тесты я должен написать для следующей функции? Кроме того, как предоставить образец JSONobject в качестве параметра в функции? - PullRequest
0 голосов
/ 09 ноября 2019

Вот функция, которую я хочу провести модульное тестирование. Я пишу это в Android, и так как JSONObject является классом Android, я не могу инициировать, я могу просто высмеивать, но я также хочу проверить, есть ли образец JSON, и он дает правильный результат или исключение (если неправильный образецJSON)

public List<GithubRepositorySchema> parseAndReturnGithubRepositorySearchResponse(JSONObject response) throws Exception {
        List<GithubRepositorySchema> githubRepositorySchemas = new ArrayList<>();
        if (response.has("items")) {
            JSONArray items = response.getJSONArray("items");
            for (int i = 0; i < items.length(); i++) {
                JSONObject repoObj = items.getJSONObject(i);
                githubRepositorySchemas.add(new GithubRepositorySchema(
                        repoObj.getString("name"),
                        repoObj.getBoolean("private"),
                        repoObj.getString("description"),
                        repoObj.getString("language"),
                        repoObj.getInt("forks_count"),
                        repoObj.getInt("open_issues"),
                        repoObj.getInt("watchers")
                ));
            }
        } else {
            throw new JSONException("Incorrect Json");
        }

        return githubRepositorySchemas;
    }

1 Ответ

0 голосов
/ 09 ноября 2019

Ваши тестовые случаи могут быть: 1. Тестировать с одним элементом JSON, утверждать, что объект имеет одинаковые свойства 2. Несколько элементов JSON, проверять свойства объектов 3. Тестировать без «элементов» и видеть, что ваш метод выдаетИсключение 4. Дурачиться с отдельными ключами Объекта. Я заметил, что вы не используете аналогичные проверки ключа для объекта. Это одна из областей, где модульное тестирование действительно может выявить ошибку в вашем коде.

Редактировать: Вы можете построить JSONObject с помощью конструктора и добавить в него объекты, как карту. Посмотрите.

Я бы не рекомендовал писать этот код. Есть много парсеров (Gson, Moshi, Jackson), которые делают это бесплатно.

...