Multidex 1.0.2でインストルメンテーションテストアプリに対するmultidexingがサポートされました。
https://developer.android.com/topic/libraries/support-library/revisions.html#25-4-0
例えば以下のライブラリを併用すると、64K制限にひっかかります。
app/build.gradle
androidTestCompile 'org.mockito:mockito-android:2.8.47'
androidTestCompile 'com.squareup.assertj:assertj-android-appcompat-v7:1.1.1', {
exclude group: 'com.android.support'
}
androidTestCompile 'com.squareup.okhttp3:mockwebserver:3.8.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2', {
exclude group: 'com.android.support'
}
Multidexはこのような場合に有効な手段なのですが、残念なことに現在ドキュメントがないようですので、以下に導入方法を示します。
2017/07/29追記
ドキュメントの不備について指摘したところ、gradleプラグイン側の対応が未完了との回答を頂いたので、以下の内容を試す場合は自己責任でお願いします。
まず、build.gradleのrepositories
にmaven { url 'https://maven.google.com' }
を追加します。
build.gradle
allprojects {
repositories {
// Gradle 4.0以上を使用している場合は、`google()`でも可
maven { url 'https://maven.google.com' }
}
}
次に、app/build.gradleにて、Multidexを有効にします。
app/build.gradle
android {
defaultConfig {
multiDexEnabled true
}
}
configurations {
all {
// 強制的に1.0.2を適用します
resolutionStrategy.force 'com.android.support:multidex:1.0.2'
}
}
dependencies {
compile 'com.android.support:multidex:1.0.2'
}
AndroidJUnitRunnerを継承したJUnitRunnerを用意し、以下のようにMultiDex#installInstrumentation(Context, Context)
を呼び出します。
app/src/androidTest/java/com/example/myapplication/JUnitRunner.java
// パッケージ名は適宜読みかえて下さい
package com.example.myapplication;
import android.os.Bundle;
import android.support.multidex.MultiDex;
import android.support.test.runner.AndroidJUnitRunner;
public class JUnitRunner extends AndroidJUnitRunner {
@Override
public void onCreate(Bundle arguments) {
MultiDex.installInstrumentation(getContext(), getTargetContext());
super.onCreate(arguments);
}
}
最後に、app/build.gradleのtestInstrumentationRunner
に、作成したJUnitRunnerを指定します。
app/build.gradle
android {
defaultConfig {
testInstrumentationRunner 'com.example.myapplication.JUnitRunner'
}
}
以上です。