squareのokhttpのサブプロジェクトmockwebserverは、簡単な記述でローカル環境にモックhttpサーバーを立ち上げられるので、通信モジュールの単体テストには大変便利です。
ただし、特に記述は見つかりませんでしたが、Android2.1では動作しません。
私が遭遇した主な問題は、次の2点
- webmockserver及び依存モジュールのokioで、初期のAndroidには搭載されていなかったJava1.6系由来のAPIを使用しているため、ランライムの例外に落ちる。
- サーバーソケットクローズにまつわるバグ(https://code.google.com/p/android/issues/detail?id=6144)
これらのAPIを使っている箇所を置き換えたり、バグの回避コードを書いてあげることで、Android2.1でも使うことができそうです。
2015年現在そんな辛い開発をするひとは他にいないとは思いますが、以下対策版の導入手順のメモ書きです。
mockwebserverのビルド
githubにコミットしておいたのでこちらを使います。
% git clone git@github.com:gamako/okhttp.git -b android2.1-workaround
mvnコマンドでビルドしてjarを作ります。
% mvn package -pl mockwebserver
mockwebserver/targetディレクトリにjarファイルができているはずです。
okioのビルド
こちらもgithubにコミットしておいたので、こちらを使います。
% git clone git@github.com:gamako/okio.git -b android2.1-workaround
mvnコマンドでビルドしてjarを作ります。
% mvn package -pl okio
targetディレクトリにjarファイルができているはずです。
プロジェクトに追加
targetディレクトリにできたjarファイルをlibsに置いて、gradleには依存関係を記述します。
okhttpを必要とするので、こちらはmavenから持ってくるようにします。
また、okhttpはokioを自動で取得してくるため、自前のjarとバッティングします。exclude指定しておきましょう。
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
androidTestCompile ('com.squareup.okhttp:okhttp:2.4.0') {
exclude module: 'okio'
}
}
こちらからは以上です。