java.lang.LinkageError:ローダー制約違反:メソッド "com.example.demo.utils.R.init(Landroid/content/Context ;)V "現在のクラスcom/example/test/FirstTestのクラスローダ(org/robolectric/internal/bytecode/InstrumentingClassLoaderのインスタンス)とクラスローダ(sun/misc/Launcher $ AppClassLoaderのインスタンス)メソッドの定義クラス、COM /例/デモ/ utilsの/ Rは、署名に使用されるタイプのアンドロイド/コンテンツ/コンテキストの異なるクラスのオブジェクトを有するアンドロイドユニットテスト+ robolectric 3.0 + java.lang.LinkageError:ローダー制約違反
テストコード:
@runwith(RobolectricGradleTestRunner.class)
@config(constants = BuildConfig.class,sdk = 21,application = TestApplication.class)
public class FirstTest{
@test
public void testCase01(){
MainActivity mainActivity = Robolectric.setupActivity(MainActivity.class);
....
}
}
build.gradle:
dependencies {
testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.0"
testCompile 'org.robolectric:shadows-httpclient:3.0'
...
}
のsrc /テスト/ javaの/.../ TestApplication:
public class TestApplication extends Application {
}
COM /例/デモ/ MainActivity:
public class MainActivity extends Activity {
@override
protected void onCreate(Bundle savedInstanceState) {
...
com.example.demo.utils.R.init(getApplicationContext());
...
}
}
COM /例/デモ/ utils/R:
public final class R {
public static Resources resources;
private static String packageName;
public static void init(Context paramContext) {
resources = paramContext.getResources();
packageName = paramContext.getPackageName();
}
...
}