2011年6月7日火曜日

Google App Engine for Java のデータストアAPIのテストを実装してみる(その7)

今回は、テストの実体となる doTest()メソッドの説明を行います。
実のところ、このメソッドの中身はサンプルコードの要点ではないので、
とりあえず実装しているだけです。
サンプルコードは、@Beforeと@Afterの内部の実装について
説明するための実験用です。


@Test
 public void doTest(){
  //サンプルデータをデータストアから検索する
  for (int i = 0;i < propertyNames.length;i++){
   Query query = new Query(DATA_KIND);
   query.addFilter(propertyNames[i], FilterOperator.EQUAL, propertyValues[i]);
   PreparedQuery prepare = ds.prepare(query);
   List entitiesList = prepare.asList(FetchOptions.Builder.withDefaults());
   assertEquals(1,entitiesList.size());
   Iterator iter = entitiesList.iterator();
   while (iter.hasNext()){
    Entity entity = iter.next();
    assertTrue(propertyValues[i].equals(entity.getProperty(propertyNames[i])));
   }
  }
 }

@Testアノテーションの付いている
doTest()メソッドは、実際のテストコードです。

メソッド内で行われている動作は、
  propertyNamesの各要素をプロパティ名として、
  該当するプロパティ値を持つエンティティを検索する
   ↓
  取得したエンティティのプロパティ値を検証する
という内容です。
これをpropertyNamesの長さ分、繰り返しています(forブロック)。

Query query = new Query(DATA_KIND);
この行は、DATA_KINDで取得するデータの種類を指定して
Queryを生成しています。

query.addFilter(propertyNames[i],FilterOperator.Builder.EQUAL,propertyValues[i]);
引数propertyNames[i]は検索するプロパティ名、
引数FilterOperator.Builder.EQUALはプロパティ値の検索条件を同値とすること、
引数propertyValues[i]は、プロパティ値の境界を設定しています。

PreparedQuery prepare = ds.prepare(query);
ds.prepare()メソッドの検索条件を設定したクエリオブジェクトを渡して、
検索の実行を準備します。

この後、クエリを実行してエンティティを取り出しますが、
次回に説明します。



インストール不要・無料のKaede翻訳ツール
http://kaedetrans.appspot.com/

0 件のコメント:

コメントを投稿