サンプルコードを掲載します。
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 List keyList;
/**
* @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 件のコメント:
コメントを投稿