其他分享
首页 > 其他分享> > spring – 验证测试将数据预加载到GAE dev服务器数据存储区

spring – 验证测试将数据预加载到GAE dev服务器数据存储区

作者:互联网

在我的应用程序中,我有一组DAO,我将其注入到我的应用程序层中.对于我正在编写的验收测试,我想用数据预加载dev_server数据存储区,所以我在JUnit测试中使用相同的Spring配置(使用@ContextConfiguration注释)将相关DAO的实例注入到我的测试中.当我真正去存储一些数据时,例如:

dao.add(entity)

我得到了可怕的“没有为这个线程注册API环境.”

Caused by: java.lang.NullPointerException: No API environment is registered for this thread.
 at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:108)
 at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:118)
    ....

这可能是因为我的测试用例没有在应用程序详细信息中读取GAE application-web.xml(虽然我猜这里我真的错了);因此,它不知道写入dev_server上运行的应用程序正在读/写的同一数据存储区.

如何让我的测试“指向”与应用程序相同的数据存储区?是否有一些“数据源”机制,我可以注入应用程序和测试?有没有办法让我的测试强制数据存储api读取所需的配置?

解决方法:

Here是一个页面,讨论如何进行连接到开发数据存储区的单元测试.这是你要找的东西吗?基本上它讨论了两个类,LocalServiceTestHelper和LocalDatastoreServiceTestConfig,您可以使用它们来设置测试环境.虽然给出的示例是单元测试,但我相信它也适用于您的情况.

然后,您可以配置dev数据存储区是写入磁盘还是仅保留在内存中(以便更快地进行测试).如果您希望此数据与开发服务器位于同一位置,您可能需要调整此值,因为我认为默认值是“内存中”选项.如果查看javadoc,可以使用“setBackingStoreLocation”方法指向您想要的任何文件.

标签:spring,google-app-engine,automated-tests,acceptance-testing
来源: https://codeday.me/bug/20190630/1340384.html