2015-06-24 4 views
0

Я пишу модульные тестовые примеры для проекта, который возьмет JSON в качестве тела сообщения и ответит с помощью тела почты JSON.Json Request Response Test Cases

Есть несколько проверок должны быть сделаны как:

  1. указаны все обязательные поля?
  2. Как работает система с нулевыми значениями или отсутствием поля?
  3. Как система ведет себя с нулевыми значениями во внутренних jsons?
  4. Границы для числовых атрибутов.

Для моего первоначального набора единичных тестовых примеров я написал несколько json вручную, сохранил их как плоские файлы и запускал тестовые примеры. Это не будет хорошо масштабироваться для многих микросервисов.

Так что я хочу достичь большей части этого кода. Поэтому в моей начальной фазе я хочу сгенерировать всю перестановку json-объекта с учетом скелета. Как удалить поля, введите поля null и т. Д.

Я использую Java 1.8, Jackson быстрее xml, трикотаж, чтобы достичь этого. Я застрял на нескольких фронтах здесь:

  1. Поскольку это очень распространенный прецедент, я не знаю какого-либо конкретного инструмента?
  2. Метод Jackson JsonNode equals() определяет неравенство с нулевым значением поля или отсутствием поля.
  3. Что может повлиять на внутренние json-узлы?
+0

Можете ли вы уточнить, каково ваше точное требование, насколько вы в состоянии достичь этого требования и т. Д. Из сообщения не удается определить точное требование. –

+0

Вы задаете здесь 3 вопроса, где 1 слишком широк, вы должны создать 3 и показать, что вы пытались более точно –

ответ

0

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

  1. Использование, например. http://jsonschema.net/#/, чтобы определить схему и проверить все запросы на схему, используя, например, https://github.com/fge/json-schema-validator. Это гарантирует, что запросы будут хорошо сформированы, если они будут обработаны.

  2. Напишите конкретные тесты UNIT для отдельных методов обработки отдельных запросов для проверки конкретных случаев использования. Используйте конструкторы объектов для построения и очереди тестовых примеров, как показано, например. на http://blog.jayfields.com/2009/01/most-java-unit-tests-consist-of-class.html

  3. Вы можете автоматизировать генерацию некоторых тестовых примеров. Крайние случаи и нулевые значения всегда являются хорошей идеей, но сначала вам нужно определить свои ожидания. Для полностью рандомизированных испытаний блока читать на обсуждении на Random data in Unit Tests?

То, что вы пытаетесь сделать, это больше из интеграционного теста. Валидация поможет избавиться от большинства искаженных запросов и о том, как ваша система обрабатывает конкретные запросы, у вас должны быть ответы уже до начала кодирования.