我正在尝试运行在可执行 .jar 文件中启动的 Robolectric 测试。Robolectric 要求您将 File 传递给其构造函数,其目录包含 AndroidManifest.xml 文件。我的 AndroidManifest.xml 文件位于我的 .jar 文件的根目录中,并且测试运行程序位于类似 com.some.package 的包中。我怎样才能做到这一点?
我尝试了以下方法:
public class CustomTestRunner extends RobolectricTestRunner {
public CustomTestRunner(Class testClass) throws InitializationError, URISyntaxException {
super(testClass, new File(CustomTestRunner.class.getResource("/AndroidManifest.xml").getPath().replace("AndroidManifest.xml", "")));
}
}
哪个不起作用,当它运行 Robolectric 抱怨时,我得到这个 FileNotFoundException:
java.io.FileNotFoundException: /Users/christopherperry/Desktop/file:/Users/christopherperry/Desktop/my-executable-jar.jar!/AndroidManifest.xml 未找到或不是文件;它应该在 com.xtremelabs.robolectric.RobolectricTestRunner.createResourceLoader(RobolectricTestRunner.java:602) 的 com.xtremelabs.robolectric.RobolectricConfig.validate(RobolectricConfig.java:73) 指向您项目的 AndroidManifest.xml
我不明白,因为 AndroidManifest.xml 文件位于 jar 文件的根目录中,并且从错误消息来看,这似乎是它正在查找的位置。