模拟Bigquery进行集成测试

Eya*_*der 13 java integration-testing google-bigquery

虽然在我的Java集成测试中其他接口相对容易模拟,但我找不到一种模拟Bigquery的正确方法.

一种可能性就是模仿我在Bigquery本身上面编写的图层,但我更喜欢以更自然的方式模仿Bigquery.我正在寻找一种有限的轻量级实现,它允许定义表内容,并支持使用标准API的查询.有这样的图书馆吗?如果没有,建议采用哪种替代方法?

Adr*_*ian 7

在单元测试中,模拟所有外部依赖项是完全正确的,并且只要您使用接口来抽象出对BigQuery客户端的访问,模拟就不应成为问题.

通过集成测试,我宁愿将所有第三方依赖项测试到应用程序所需的扩展.

例如,一个案例是ETL,它将数据从外部源流式传输到BigQuery,在这种情况下,集成测试需要验证所有数据是否按预期在BigQuery中,这意味着验证阶段需要考虑重复的和嵌套的消息按要求.

另一种情况是运行某些业务SQL的应用程序,在这种情况下,您应该在应用程序运行之前使用一些测试数据填充BigQuery,然后应用程序需要将SQL输出发布为视图/新表/或流出的数据.用于验证.

已经有一些库负责使用包括BigQuery/NoSQL/SQL在内的数据存储进行集成测试

它们将为上述情况提供简单的解决方案,并完全支持SQL,动态宏/谓词等....

  1. Dsunit (go-lang)
  2. JDsunit(java)
  3. Endly(语言不可知)

了解更多如何使用endly进行ETL和BiqQuery测试

如果数据存储集成测试库不适合您,并且您正在寻找仅测试BigQuery客户端,那么好消息是客户端使用REST,因此使用网络嗅探器可以轻松记录来回发送的内容,然后您可以在重播中使用它.为了将BigQuery从公共BG端点重定向到您的重播器,您将使用http java proxy.