虽然在我的Java集成测试中其他接口相对容易模拟,但我找不到一种模拟Bigquery的正确方法。
一种可能性是模仿我在Bigquery本身上面编写的图层,但我更喜欢以更自然的方式模仿Bigquery。我正在寻找一种有限的轻量级实现,它允许定义表内容,并支持使用标准API的查询。 有这样的图书馆吗?如果没有,建议采用哪种替代方法?
答案 0 :(得分:5)
在单元测试中,模拟所有外部依赖项是完全正确的,并且只要您使用接口来抽象出对BigQuery客户端的访问,模拟应该不是问题。
通过集成测试,我宁愿测试所有第三方依赖项 延伸应用程序需要它。
例如,一个案例是ETL,它将数据从外部源流式传输到BigQuery,在这种情况下,集成测试需要验证所有数据是否按预期在BigQuery中,这意味着验证阶段需要考虑重复,和嵌套的消息。
另一种情况是运行某些业务SQL的应用程序,在这种情况下,您应该在应用程序运行之前使用一些测试数据填充BigQuery, 然后,应用程序需要将SQL输出发布为视图/新表/或流出数据以进行验证。
已经有一些库负责使用数据存储进行集成测试,包括BigQuery / NoSQL / SQL
他们将为上述案例提供简单的解决方案,并完全支持SQL,动态宏/谓词等....