2

HRD を使用しているときに、jUnit を使用してデータストアの状態をテストする正しい方法を見つけるのに苦労しています。

私のセットアップ: App Engine 1.7.1、HRD セット。複数のエンティティでトランザクションを使用しています。ブラウザで開発モードでアプリを実行すると、すべて問題ありません。

私の jUnit ヘルパー: protected final LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig().setDefaultHighRepJobPolicyUnappliedJobPercentage(50));

問題: いくつかのエンティティを永続化します。親がないため、データストアを一貫して読み取って保存されているかどうかを確認できません。

質問: 一部の保存操作が適用されず、親にアクセスしてデータストアを実際に確認することができないため (親関係を使用していないため)、それらがデータストアに保存されていることをテストするにはどうすればよいですか?

注: XG トランザクションを使用しているため、HRD を使用する必要があります。

保留中の操作を「フラッシュ」する方法はありますか?

ダニエル

4

2 に答える 2

2

おそらくこれにアプローチする最善の方法は、毎回適用される独自の HighRepJobPolicy を定義し、必要なテストにそれを登録することです。このユニットテストドキュメントページで「独自の登録」を検索してください。

この議論も参照してください。

ドキュメント ページの例は、1 回おきに適用されるポリシーを作成する方法を示していますが、代わりに、新しいジョブと既存のすべてのジョブが毎回適用されるメソッドのバージョンを作成します。

于 2012-09-16T08:15:40.363 に答える
2

親がなくても、id またはキーでエンティティを取得すると、一貫してエンティティを読み取ることができます。ただし、クエリは一貫した結果を返しません。

あなたのように構成を結果整合性に設定している場合は、結果整合性のある結果を処理できるようにテストを作成する必要があります。

完全に一貫した結果が期待されるようにテストを作成する場合は、未適用のジョブの割合を 0 に設定して、完全に一貫した方法で動作するようにします (ただし、実際の実行方法は反映されません)。

于 2012-09-11T00:28:45.893 に答える