- 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
コードを送ってくださる気持ちは嬉しいのですが、アプリとして手で触ってその辺りが一通り動くところまでは既に出来上がっていたりするんですよね。 ただ、それを自動テストで何度もテストを行えるようにするための良い方法がわからないだけだったんです。
|