0

実行可能な.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ファイルのルートにあるため、わかりません。エラーメッセージから、これが探している場所のように見えます。

4

1 に答える 1

0

JAR ファイル内の項目自体はファイルではないため、答えは「できません」です。

Class.getResource() から取得した URL、または Class.getResourceAsStream() から取得したストリームを介してアクセスできます。

于 2013-01-22T23:32:19.433 に答える