トップページ > プログラム > 2015年10月28日 > U1jLaXVA

書き込み順位&時間帯一覧

8 位/187 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000001201001000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
896
Androidプログラミング質問スレ revision49 [転載禁止]©2ch.net

書き込みレス一覧

Androidプログラミング質問スレ revision49 [転載禁止]©2ch.net
891 :デフォルトの名無しさん[]:2015/10/28(水) 12:02:40.15 ID:U1jLaXVA
Android+JUnitでテスト中に問題にあたったので質問をさせてください
アプリのですとで初回起動とそれ以降の起動で動作を分ける(チュートリアルを表示させる)
テストを行いたいのですが、こういう時ってどうテストを行えばよいのでしょうか?

今は、ActivityInstrumentationTestCase2を使ってテストを行っていますが
起動中の処理がこれのsetUpメソッドで全て自動で行われていて
途中で初回起動とその他を切り分ける処理を挟み込めなくて困っています

テスト対象ActivityのonCreateメソッド中で
SharedPreferenceを読み込む値を、初回起動とそれ以外で切り分けられたら理想なのですが
ググってはそれっぽいコードを順番に試していますがなかなかうまくいっておりません
教えていただけると幸いです。

現在の環境は、iMac+AndroidStudio最新版です。
Androidプログラミング質問スレ revision49 [転載禁止]©2ch.net
896 :デフォルトの名無しさん[]:2015/10/28(水) 13:09:52.04 ID:U1jLaXVA
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
Context context = InstrumentationRegistry.getInstrumentation().getContext();
SharedPreferences pref = context.getSharedPreferences("APP_NAME", Context.MODE_PRIVATE);
pref.edit().putBoolean("INITIALIZED", false).commit();
super.setUp();

みたいな感じで書いてみたんですが、書き換えたPreferenceが内部でうまく読まれていなかったみたいなんですよ。
Androidプログラミング質問スレ revision49 [転載禁止]©2ch.net
899 :896[]:2015/10/28(水) 13:44:43.68 ID:U1jLaXVA
>> 898

ああ、誤解を招いてしまってすいませんね
さっき貼り付けたコードはJUnit内部のsetUpメソッドの内側で動かしているコードです。

super.setUp();

を呼ぶと、テストしたいActivityのonCreateとかの諸々の初期化が行われます。
Androidプログラミング質問スレ revision49 [転載禁止]©2ch.net
902 :896[]:2015/10/28(水) 15:33:39.24 ID:U1jLaXVA
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);

context = getApplicationContext();
// 初回起動の切り分け(PreferencesはSharedPreferencesの薄いラッパー)
if( !Preferences.getBoolean(context, Preferences.INITIALIZED_KEY) ){
// 初回起動時の処理、チュートリアルの開始
} else {
// 通常起動処理
}
}

こういう感じのコードの初回起動との切り分け部分だけ、JUnitを騙せればいいんですけどねぇ
Mochitoでモック貼れないかとか色々試しているのですが、まだうまくいっていません
Androidのアプリもきちんと書き出したのは今回が初めてなので、何が定番の手法かも分かっていないのです
うーむ。
Androidプログラミング質問スレ revision49 [転載禁止]©2ch.net
905 :896[]:2015/10/28(水) 18:22:34.56 ID:U1jLaXVA
>> 872
コードを送ってくださる気持ちは嬉しいのですが、アプリとして手で触ってその辺りが一通り動くところまでは既に出来上がっていたりするんですよね。
ただ、それを自動テストで何度もテストを行えるようにするための良い方法がわからないだけだったんです。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。