More Related Content Similar to 開発を効率的に進めるられるまでの道程 Similar to 開発を効率的に進めるられるまでの道程(20) More from Takao Sumitomo(20) 開発を効率的に進めるられるまでの道程27. DroidKaigi 2015/04/25 @cattaka_net
SharedPreferencesの差し替え
プロダクションコード
public class SharedPreferencesFactory {
static SharedPreferencesFactory INSTANCE = new SharedPreferencesFactory();
public static SharedPreferencesFactory getInstance() {
return INSTANCE;
}
public SharedPreferences newInstance(Context context, String name) {
return context.getSharedPreferences(name, Context.MODE_PRIVATE);
}
}
テスト用のダミー
public class DummySharedPreferencesFactory extends SharedPreferencesFactory {
public SharedPreferences newInstance(Context context, String name) {
SharedPreferences pref = context.getSharedPreferences(
"test_" + name, Context.MODE_PRIVATE);
pref.clear();
return pref;
}
}
テストのときは
ここをダミーに差し替える
29. DroidKaigi 2015/04/25 @cattaka_net
SqlteOpenHelperの差し替え
プロダクションコード
public class OpenHelperFactory {
static OpenHelperFactory INSTANCE = new OpenHelperFactory();
public static OpenHelperFactory getInstance() {
return INSTANCE;
}
@Override
public OpenHelper createOpenHelper(Context context) {
return new OpenHelper(context);
}
}
テスト用のダミー
public class DummyOpenHelperFactory extends OpenHelperFactory {
public OpenHelper createOpenHelper(Context context) {
Context c = new RenamingDelegatingContext(context, "test_");
return new OpenHelper(c);
}
}
テストのときは
ここをダミーに差し替える
37. DroidKaigi 2015/04/25 @cattaka_net
Adapterのテスト
public void testGetView() {
List<CheckListItem> dummys = new ArrayList<>();
{ // ダミーデータを作る
dummys.add(new CheckListItem(1L, 1L, 1L, "Label1"));
dummys.add(new CheckListItem(2L, 2L, 2L, "Label2"));
}
Context context = getInstrumentation().getTargetContext();
MyAdapter sup = new MyAdapter(context, dummys);
{ // 1つめのViewの表示内容を確認する
View view = sup.getView(0, null, null);
assertThat(view, is(Matchers.instanceOf(CheckedTextView.class)));
assertThat(((CheckedTextView)view).getText().toString(), is("Label1"));
}
{ // 2つめのViewの表示内容を確認する
View view = sup.getView(1, null, null);
assertThat(view, is(Matchers.instanceOf(CheckedTextView.class)));
assertThat(((CheckedTextView)view).getText().toString(), is("Label2"));
}
}
39. DroidKaigi 2015/04/25 @cattaka_net
Databaseのテスト
@Override
protected void setUp() throws Exception {
super.setUp();
Context context = new RenamingDelegatingContext(
getInstrumentation().getTargetContext(), "test_");
mOpenHelper = new OpenHelper(context);
}
public void testInsertSelect() {
CheckListEntry orig = new CheckListEntry();
orig.setTitle("hoge");
{ // INSERTする
mOpenHelper.registerEntry(orig);
}
CheckListEntry dest;
{ // SELECTする
Long id = orig.getId();
dest = mOpenHelper.findEntry(id, false);
}
{ // 確認する
assertThat(dest.getTitle(), is("hoge"));
}
}