在我的应用程序中,我有一组 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 读取所需的配置?