私のアプリケーションには、アプリケーション層に挿入する一連の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に必要な構成を強制的に読み取らせる方法はありますか?