模拟Bigquery进行集成测试

时间:2016-09-15 09:35:36

标签: java google-bigquery integration-testing

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

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

1 个答案:

答案 0 :(得分:5)

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

通过集成测试,我宁愿测试所有第三方依赖项 延伸应用程序需要它。

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

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

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

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

  1. Dsunit(go-lang)
  2. JDsunit(java)
  3. Endly(语言不可知)
  4. 详细了解如何使用endly进行ETL和BiqQuery测试

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