실행 가능한 .jar 파일 내부에서 실행되는 Robolectric 테스트를 실행하려고합니다. Robolectric requires 당신은 안드로이드Manifest.xml 파일이 들어있는 디렉토리를 사용하여 파일을 생성자로 전달해야합니다. 내 AndroidManifest.xml 파일은 내 .jar 파일의 루트에 있으며 테스트 러너는 com.some.package와 같은 패키지에 있습니다. 이것을 어떻게 할 수 있습니까? .jar 파일의 루트를 기준으로 디렉토리를 나타내는 File 객체를 만듭니다.
나는 다음과 같은 시도 :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이 얻을 :
에서 프로젝트의 AndroidManifest.xml을 가리켜 야합니다java.io.FileNotFoundException : /사용자/christopherperry/데스크탑/파일 : /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 파일이 jar 파일의 루트에 있고 오류 메시지에서 찾고있는 것으로 보이는 때문에 이해가 안됩니다.
그래서 기본적으로, 나는 f'ed. –
@ChristopherPerry JAR 파일은 파일 시스템이 아닙니다. 그것이 당신의 의도라면, 그 (것)들을 완전히 재건하지 않고 쓸 수는 없습니다. 요구 사항을 다시 생각해보십시오. – EJP
항아리에 쓰려고하지 않고 내 문제를 다시 읽으십시오. Robolectric은 항아리 안에 포장 된 파일을 읽으려고합니다. 그것은 내 것이 아니라 Robolectric의 요구 사항입니다. –