如何在Robolectric 2.2中指定custom / res目录?

时间:2014-01-30 18:14:51

标签: android robolectric android-testing

我的单元测试和我的Android应用程序存在于不同的项目中。

使用Robolectric 1,我可以像这样指定我的/ res目录位置:

public class MyTestRunner extends RobolectricTestRunner {
    public MyTestRunner(Class<?> testClass) throws InitializationError {
        super(testClass, "../app/AndroidManifest.xml", "../app/res");
    }
}

如何在Robolectric 2.2中指定/ res目录位置?

2 个答案:

答案 0 :(得分:1)

使用RobolectricTestRunner#getAppManifest(Config)

public MyTestRunner(Class<?> testClass) throws InitializationError {
    super(testClass);
}

@Override
protected AndroidManifest getAppManifest(Config config) {
    return new AndroidManifest(
            Fs.fileFromPath("../app/AndroidManifest.xml"),
            Fs.fileFromPath("../app/res"),
            Fs.fileFromPath("../app/assets"));
}

答案 1 :(得分:1)

前一段时间我有同样的问题,你所要做的就是用以下方法注释你的测试类:

@Config(manifest = "../app/AndroidManifest.xml")

将从您的清单中为您挑选依赖项。

PS。还要确保您使用@RunWith(RobolectricTestRunner.class)注释了您的测试类,并使用适当的JUnit注释(@Before@Test@After等)注释了您的方法(以防万一)你还没有忘记)。