サンプルコードを掲載します。
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.FetchOptions; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.PreparedQuery; import com.google.appengine.api.datastore.Query; import com.google.appengine.api.datastore.Query.FilterOperator; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; /** * Google App Engine for Javaにおけるユニットテストのサンプルコード。 */ public class LocalUnitTestSample { private static final String DATA_KIND = "sampleDataKind"; private LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()); private String propertyName = "propertyName"; private String[] propertyValues = {"pValue1","pValue2","pValue3","pValue4","pValue5"}; private DatastoreService ds; private ListkeyList; /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { helper.setUp(); //サンプルデータをデータストアに保存する putSampleData(); } /** * サンプルデータをデータストアに保存するメソッド。 */ private void putSampleData() { keyList = new ArrayList (); ds = DatastoreServiceFactory.getDatastoreService(); for (int i = 0; i < propertyValues.length; i++) { Entity entity = new Entity(DATA_KIND); entity.setProperty(propertyName, propertyValues[i]); Key key = ds.put(entity); keyList.add(key); } } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { //サンプルデータをデータストアから削除する deleteSampleData(); helper.tearDown(); } /** * サンプルデータをデータストアから削除するメソッド。 */ private void deleteSampleData() { Iterator iter = keyList.iterator(); while (iter.hasNext()){ ds.delete(iter.next()); } } @Test public void doTest(){ //サンプルデータをデータストアから検索する for (int i = 0;i < propertyValues.length;i++){ EntitySearch search = new EntitySearch(ds,DATA_KIND,propertyName); List entitiesList = search.getEntity(propertyValues[i]); assertEquals(1,entitiesList.size()); Iterator iter = entitiesList.iterator(); while (iter.hasNext()){ Entity entity = iter.next(); assertTrue(propertyValues[i].equals(entity.getProperty(propertyName))); } } } /** * データストアから、設定された名前のプロパティが該当する * エンティティを取得する機能を提供するクラス。 */ public class EntitySearch { /** * データストアサービス */ private DatastoreService ds; /** * 探索するエンティティのカインド名を表す文字列フィールド */ private String kindName; /** * 探索するプロパティの名前を表す文字列フィールド */ private String propertyName; /** * データストアサービスと、探索するプロパティの名前を引数とするコンストラクタ。 * @param ds データストアサービスオブジェクト * @param kindName 取得するエンティティのカインド名文字列 * @param propertyName 探索するプロパティ名を表す文字列 */ public EntitySearch(DatastoreService ds, String kindName, String propertyName) { this.ds = ds; this.kindName = kindName; this.propertyName = propertyName; } /** * データストアからエンティティを検索するメソッド。 * コンストラクタで設定したカインド、プロパティ名の値が * 引数propertyValueと同一のエンティティを格納したリストを返します。 * @param propertyValue 検索条件となるプロパティの値オブジェクト * @return コンストラクタで設定したプロパティが引数propertyValueと同一の値のエンティティのリスト */ public List getEntity(Object propertyValue) { Query query = new Query(kindName); query.addFilter(propertyName, FilterOperator.EQUAL, propertyValue); PreparedQuery prepare = ds.prepare(query); List entitiesList = prepare.asList(FetchOptions.Builder.withDefaults()); return entitiesList; } } }
インストール不要・無料のKaede翻訳ツール:
http://kaedetrans.appspot.com/
0 件のコメント:
コメントを投稿