2017-06-09 7 views
0

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(); 
    } 
... 
} 

答えて

0

私はテストAndroidシステムで自動生成されたRクラスと競合する "com.example.demo.utils.R"という名前のクラスを使用しています.Rの名前をRaのように別の名前に変更すると、作業が行われます。

関連する問題