Google App Engine Datastore 集成测试
Posted
技术标签:
【中文标题】Google App Engine Datastore 集成测试【英文标题】:Google App Engine Datastore integration testing 【发布时间】:2014-03-12 23:43:00 【问题描述】:我想为我的 Google App Engine REST 服务器编写一些集成测试。
我当前的设置是针对本地运行的 GAE 环境运行 Rest-Assured 集成测试。这对于返回 json 的简单调用完美无缺。
我想更进一步,在运行放心 IT 之前,我想清除数据存储并用一些测试数据预先填充它。
如果本地应用程序正在运行,是否可以与同一个数据存储(来自集成测试)进行交互?请注意,我正在从 Eclipse 或 mvn test 运行测试。
我已经尝试过 LocalServiceTestHelper
private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
但这似乎并没有连接到同一个数据存储区,这也很有意义,因为它用于单元测试。
【问题讨论】:
【参考方案1】:我认为您正在进行的测试只是一个单元测试 (JUnit),因此您需要的是一个集成测试,例如使用 Arquillian。
使用 GAE Arquillian 测试非常简单,只需使用 RedHat CapeDwarf 团队开发和维护的 GAE Arquillian 容器即可:
https://github.com/alesj/arquillian-container-gae
这是一个示例用法:https://github.com/alesj/arquillian-container-gae/blob/master/gae-embedded/src/test/java/org/jboss/arquillian/container/appengine/embedded/AppEngineEmbeddedClientTestCase.java
【讨论】:
【参考方案2】:您可以将测试装置部署为separate module。在该模块中编写一组用于设置和拆卸测试数据的 ReST 处理程序。然后,在您的测试中通过 http 调用这些处理程序。
请注意,在云数据存储查询中显示新记录会稍有延迟,具体取决于您正在执行的操作,您可能需要在测试代码中考虑到这一点。
【讨论】:
以上是关于Google App Engine Datastore 集成测试的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud 中的 Google Compute Engine、App Engine 和 Container Engine 有啥区别?
连接 Google App Engine 和 Google Compute Engine
Google App Engine Flexible 和 Google Container Engine 之间的区别?
如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?