2011年10月16日(Sun) 場所によっては雨が降ってたり [長年日記]
● [Android] SharedPreferencesのテストにMockContextを使ってみる
そもそもstubとmockの違いもよくわかっていないのですが、 アプリづくりは続けたい。 SharedPreferencesのテストのために、アプリケーションとは独立したSharedPreferencesを用意したくなったので試してみました。 テスト初心者の試行錯誤の結果なので、眉にツバをつけて読んでくださいね。 誤りの指摘もよろしくお願いします。
ここでは、SharedPreferencesとやりとりをするクラスをテストしようとしています。 テストのために環境にある設定を変えてしまうのは避けたい (ユニットテストでは必須の要求ですよね)。 最初は、これまでの値を覚えておいてテスト後に戻すようにしていたのですが、 せっかくだからもう少しちゃんとしたものにしたい。 Android Developers より、 MockContextというものを見つけました。 なかなか正当な使い方の例を見つけられなかったので、 Stackoverflowへの回答を眺めながら、 このように変更してみました(下記に抜粋)。
テストケースのためのクラスのインナークラスとして、 テスト用のSharedPreferencesを環境から切り離すためのクラスを、 MockContextをextendして作りました。 Privateなインナークラスにしておけば、他から間違えて使っちゃう心配がないかな、と。
テスト用のSharedPreferencesを環境から切り離すためのクラスには、 テスト対象のコードから呼んでもらえるように、 getSharedPreferences()を定義しました。 本当のSharedPreferencesの実装を使ったテストをしたいので、 ここでは、テスト環境のContextから得られたSharedPreferencesを、 名前を変えて使うようにしてみました。
この変更後、以前と同じくテストが成功することを確認しました。 さて、これでいいのかな…。
次はActivityのテストをしてみたいと思います。難しそう。
- https://www.google.co.jp/ ×297
- https://www.google.com/ ×18
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×3
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×3
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×3
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&f... ×3
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&f... ×2
- http://t.co/jn7fel3p ×2
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&... ×1
- https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&... ×1
- https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&... ×1
- https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&... ×1
- https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&... ×1
- https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&... ×1
- https://www.facebook.com/ ×1
- http://yandex.ru/clck/jsredir?from=yandex.ru;searc... ×1
- http://yandex.ru/clck/jsredir?from=yandex.ru;searc... ×1
- http://www.google.co.jp/webhp?sourceid=chrome-inst... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&source=w... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- https://www.google.com/url?sa=t&rct=j&q=&esrc=s&so... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s... ×1
- android mockcontext ×29 / mockcontext android ×19 / mockcontext ×18 / MockContext ×12 / mockcontext getsharedpreferences ×8 / MockContext android ×7 / mockcontext 使い方 ×6 / android test sharedpreferences ×5 / android sharedpreferences test ×5 / android MockContext ×4 / sharedpreferences使い方 ×4 / androidtestcase 使い方 ×4 / MockContext Android ×3 / mockcontext application ×3 / android sharedpreferences テスト ×3 / android sharedpreferences クラス間 ×3 / mockcontext test ×3 / android sharedpreferences 日にちを入れる ×3 / androidtestcase mcontext ×2 / android sharedpreferences mockcontext ×2 / Mock Sharedpreferences AndroidTestCase ×2 / android テスト MockContext ×2 / mockcontextとは ×2 / Android test sharedpreferences ×2 / sharedpreferences unittest ×2 / android mock sharedpreferences ×2 / android+mockcontext+extend ×2 / activityを持たないクラスからsharedpreferencesを使う ×1 / mockcontext androidtestcase ×1 / getsharedpreferences ×1 / getsharedpreferences 使える場所 ×1 / getsharedpreferences 古い ×1 / context sharedpreferences ×1 / mockcontext() ×1 / androidtestcase sharedpreferences ×1 / androidtestcase mockcontext ×1 / androidtestcase context ×1 / androidtestcase context sharedpreferences ×1 / android sharedpreferences mock ×1 / android mockcontext getstring ×1 / mockcontext android 使い方 ×1 / android getsharedpreferences MockContext ×1 / android SharedPreferences test ×1 / android SharedPreferences mock ×1 / sharedpreferences mock ×1 / android+mockcontext ×1 / android unit test sharedpreferences ×1 / android testcase sharedpreferences ×1 / sharedpreferences context ×1 / android test sharedpreference ×1 / android test project sharedpreferences ×1 / android junit mockcontext ×1 / android モック sharedpreference ×1 / android テスト sharedpreferences ×1 / mockcontext+%E4%BD%BF%E3%81%84%E6%96%B9 ×1 / MockContext 使い方 ×1 / MockContext activity ×1 / Android テスト SharedPreferences ×1 / Android Sharedpreferences 再度 読み込み ×1 / Android SharedPreferences 用のクラス 作る ×1 / テスト sharedpreferences ×1 / android.test.mock.MockContext ×1 / Android SharedPreferences テストケース ×1 / Android テストからSharedPreferences ×1 / mock sharedpreferences ×1 / MockContext おまぬけ ×1 / sharedpreferences テスト ×1 / sharedpreference テスト ×1 / getSharedPreferences 専用クラス ×1 / android SharedPreferences単体テスト ×1 / SharedPreferences AndroidTest ×1 / android mockcontext sharedpreferences ×1 / Android MockContext ×1
最近のツッコまれどころ