2

在使用 HRD 时,我正在努力寻找使用 jUnit 测试数据存储状态的正确方法。

我的设置:App Engine 1.7.1,HRD 设置。我在多个实体上使用交易。在浏览器中以开发模式运行应用程序时一切正常。

我的 jUnit 助手:受保护的最终 LocalServiceTestHelper 助手 = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig().setDefaultHighRepJobPolicyUnappliedJobPercentage(50));

问题:我坚持几个实体。他们没有父级,因此我无法始终读取数据存储以查看它们是否已保存。

问题:我如何测试它们是否保存在数据存储中,因为某些保存操作不会应用并且我无法访问父级以真正检查数据存储区(因为我不使用父级关系)?

注意:必须使用 HRD,因为我使用 XG 事务。

有没有办法“刷新”待处理的操作?

丹尼尔

4

2 回答 2

2

如果您通过 id 或 key 获取实体,即使没有父级,您也可以始终如一地读取它们。但是,查询不会返回一致的结果。

如果您将配置设置为最终一致,就像您一样,您应该编写测试,以便它们可以处理最终一致的结果。

如果您想编写测试以使其期望得到完全一致的结果,请将未应用的作业百分比设置为 0,以便它以完全一致的方式运行(但不反映它的实际运行方式)。

于 2012-09-11T00:28:45.893 回答
2

解决此问题的最佳方法可能是定义您自己的每次都适用的 HighRepJobPolicy,并将其注册到您需要的测试中。在此单元测试文档页面上搜索“注册您自己的”。

另请参阅此讨论

文档页面上的示例显示了如何编写每隔一次应用的策略,但您将改为编写所有新作业和现有作业每次都应用的那些方法的版本。

于 2012-09-16T08:15:40.363 回答