データストアAPIのテストを実装する上での
気が付いた事について書きました。
今回からは、テストクラスを実装して、
具体的にどういうことなのか?
ということを述べようと思います。
まずは、サンプルコードです。
import static org.junit.Assert.*;
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[] propertyNames = {"pName1","pName2","pName3","pName4","pName5"};
private String[] propertyValues = {"pValue1","pValue2","pValue3","pValue4","pValue5"};
private DatastoreService ds;
private List<key> keyList;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
helper.setUp();
//サンプルデータをデータストアに保存する
putSampleData();
}
/**
* サンプルデータをデータストアに保存するメソッド。
*/
private void putSampleData() {
keyList = new ArrayList<key>();
ds = DatastoreServiceFactory.getDatastoreService();
for (int i = 0; i < propertyNames.length; i++) {
Entity entity = new Entity(DATA_KIND);
entity.setProperty(propertyNames[i], 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<key> iter = keyList.iterator();
while (iter.hasNext()){
ds.delete(iter.next());
}
}
@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<entity> entitiesList = prepare.asList(FetchOptions.Builder.withDefaults());
assertEquals(1,entitiesList.size());
Iterator<entity> iter = entitiesList.iterator();
while (iter.hasNext()){
Entity entity = iter.next();
assertTrue(propertyValues[i].equals(entity.getProperty(propertyNames[i])));
}
}
}
}
このコードは動作確認済みです。次回から、このコードの内容の説明と、
前回までの内容を示すコードの変更を行います。
インストール不要・無料のKaede翻訳ツール:
http://kaedetrans.appspot.com/
http://kaedetrans.appspot.com/
0 件のコメント:
コメントを投稿