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 收听消息?

将 Meteor 部署到 Google App Engine 2017

Google BigQuery 的 Google App Engine 授权