2016-09-15 4 views
8

В то время как другие интерфейсы относительно легко издеваются над моими интеграционными тестами Java, я не мог найти правильный способ насмешки Bigquery.Mocking Bigquery для тестов интеграции

Одна из возможностей состоит в том, чтобы высмеять слой, который я написал поверх самого Bigquery, но я предпочитаю насмехаться над Bigquery более естественным образом. Я ищу ограниченную, легкую реализацию, которая позволяет определять содержимое таблицы и поддерживает запросы с использованием стандартного API. Есть ли такая библиотека? Если нет, то какие альтернативные подходы рекомендуются?

ответ

4

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

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

Например, одним случаем является ETL, который передает данные из внешних источников в BigQuery, в этом случае интеграционный тест должен проверить, что все данные в BigQuery, как ожидалось, что означает, что этап проверки должен учитывать повторяющиеся , и вложенные сообщения по мере необходимости.

В другом случае будет приложение, которое запускает некоторые бизнес-SQL, в этом случае вы бы заполнили BigQuery некоторыми тестовыми данными до запуска applicaiton, , тогда аппликация должна публиковать вывод SQL либо как представление/новую таблицу/или поток из данных из для проверки.

Есть уже некоторые библиотеки, ухаживающие тестировании интеграции с хранилищами данных, включая BigQuery/NoSQL/SQL

Они обеспечивают простое решение для случаев, описанных выше, и полной поддержки SQL, динамический макро/предиката и т.д .. ..

  1. Dsunit (гоу-яз)
  2. JDsunit (Java)

Если библиотека тестирования интеграции хранилища данных не является для вас вариантом, и вы ищете просто тестирование клиента BigQuery, хорошей новостью является то, что клиент использует REST, поэтому, используя сетевые снифферы, вы можете легко записывать то, что отправляется туда и обратно, тогда вы может использовать его в replayer. Чтобы перенаправить BigQuery с публичных конечных точек BG на ваш повторитель, вы будете использовать http java proxy.

+0

Должен ли я установить go-lang для JDSUnit? Также в заявлении говорится, что нам нужно установить сервер DSUnit, что это? – user1965449

+0

Вам нужно будет установить golang, jdsunit - просто простой клиент для клиента dsunit, который фактически отвечает за подготовку и проверку данных. –

+0

Извините, не понятно ли, что сервер dsunit устанавливается автоматически при установке golang? Какой компонент взаимодействует с BigQuery, это jdsunit client или dsunit server? Просьба уточнить. Благодарю. – user1965449

Смежные вопросы