Java 模拟Bigquery进行集成测试

Java 模拟Bigquery进行集成测试,java,google-bigquery,integration-testing,Java,Google Bigquery,Integration Testing,虽然其他接口在我的Java集成测试中比较容易模拟,但我找不到模拟Bigquery的合适方法 一种可能是模拟我在Bigquery上编写的层,但我更喜欢以更自然的方式模拟Bigquery。我正在寻找一个有限的、轻量级的实现,它允许定义表内容,并支持使用标准API的查询。 有这样的图书馆吗?如果没有,建议使用什么替代方法?在单元测试中,模拟所有外部依赖项是完全可以的,只要您使用接口抽象出对BigQuery客户端的访问,模拟就不应该是问题 通过集成测试,我更愿意测试我所有的第三方依赖关系 为了扩展应用程

虽然其他接口在我的Java集成测试中比较容易模拟,但我找不到模拟Bigquery的合适方法

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

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

通过集成测试,我更愿意测试我所有的第三方依赖关系 为了扩展应用程序需要它

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

另一种情况是运行一些业务SQL的应用程序,在这种情况下,在应用程序运行之前,您需要用一些测试数据填充BigQuery, 然后应用程序需要将SQL输出发布为view/new table/或stream out of data out for verification

已经有一些库负责与数据存储的集成测试,包括BigQuery/NoSQL/SQL

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

  • (go lang)
  • (爪哇)
  • (语言不可知论)
  • 查看更多如何用于ETL和BiqQuery测试

    如果数据存储集成测试库不是您的选择,并且您正在寻找只测试BigQuery客户端的方法,那么好消息是客户端使用REST,因此使用网络嗅探器,您可以轻松地记录来回发送的内容,然后您可以在replayer中使用它。为了将BigQuery从
    公共BG端点到您的重放层您将使用http java代理。

    我需要为JDSUnit安装go lang吗?还有介绍说我们需要安装DSUnit server,那是什么?您需要安装golang,jdsunit只是DSUnit server的简单rest客户端,它实际上负责数据准备和验证。对不起,不清楚DSUnit server在我安装golang时是否会自动安装?哪个组件与BigQuery通信,是jdsunit客户端还是dsunit服务器?请澄清。谢谢。go lang中的DsUnit服务器与BigQuery通信。看起来jdsunit配置有自动安装和本地运行选项,如果设置了这些选项,那么它会拉取、构建和运行dsunit服务器(如果安装了golang)。谢谢@Adrian Witas,你能告诉我jdsunit的安装方向吗?