実行可能な.jarファイル内で開始されるRobolectricテストを実行しようとしています。Robolectricでは、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が見つからないか、ファイルがありません。プロジェクトのAndroidManifest.xml(com.xtremelabs.robolectric.RobolectricConfig.validate(RobolectricConfig.java:73))(com.xtremelabs.robolectric.RobolectricTestRunner.createResourceLoader(RobolectricTestRunner.java:602))を指す必要があります。
AndroidManifest.xmlファイルがjarファイルのルートにあるため、わかりません。エラーメッセージから、これが探している場所のように見えます。