Robolectric java.lang.IllegalArgumentException:类com.android.app.R包含最终字段

时间:2017-05-03 19:16:35

标签: junit robolectric

我正在使用分布在3个软件包中的资源来测试遗留应用程序。 所以我扩展了RobolectricTestRunner并修改了资源路径,如下所示。

public class DialerRobolectricTestRunner extends RobolectricTestRunner {

    @Override
    protected AndroidManifest getAppManifest(Config config) {

     return new AndroidManifest(Fs.fileFromPath(manifestPath), 
     Fs.fileFromPath(resDir), Fs.fileFromPath(assetsDir)) {

       @Override
       public List<ResourcePath> getIncludedResourcePaths() {
           List<ResourcePath> paths = super.getIncludedResourcePaths();

           paths.add(new ResourcePath(getRClass(),Fs.fileFromPath("../pkg1/res/"), getAssetsDirectory()));
           paths.add(new ResourcePath(getRClass(), Fs.fileFromPath("../pkg2/res/"), getAssetsDirectory()));
           paths.add(new ResourcePath(getRClass(), Fs.fileFromPath("../pkg2/res/"), getAssetsDirectory()));
           return paths;
       }
    }
}

我在使用Robolectric测试Android应用程序时看到下面的异常

java.lang.IllegalArgumentException: class com.android.app.R contains final fields, these will be inlined by the compiler and cannot be remapped.

Robolectric:3.3.2, sdk:23

0 个答案:

没有答案