2016-09-15 83 views
8

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

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

回答

4

在单元测试中,嘲笑所有外部依赖是完全正常的,并且只要您使用接口来抽象化访问BigQuery客户端,嘲笑就不应该成为问题。

通过集成测试,我宁愿让我所有的第三方依赖测试 扩展到应用程序需要它。

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

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

目前已经有一些图书馆照顾集成测试与数据存储,包括大量查询/ NoSQL的/ SQL

他们将提供上面的SQL和全力支持中描述的情况下,一个简单的解决方案,动态宏/谓语等。 ..

  1. Dsunit(去琅)
  2. JDsunit(JAVA)

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

+0

我需要为JDSUnit安装go-lang吗?另外介绍说,我们需要安装DSUnit服务器,那是什么? – user1965449

+0

您需要安装golang,jdsunit只是dsunit服务器的简单休息客户端,它实际上负责数据准备和验证 –

+0

对不起,当我安装golang时,会不会自动安装dsunit服务器?哪个组件与BigQuery进行通信,它是jdsunit客户端还是dsunit服务器?请澄清。谢谢。 – user1965449