2014-07-21 3 views
10

테스트 리소스가있는 테스트가있는 Java 라이브러리 내부 모듈이있는 Android Studio 프로젝트가 있습니다. 그러나 테스트를 실행할 때 아티팩트를 가져올 수 없습니다. 이것은 순수한 자바 gradle 프로젝트에서 잘 작동하는 것 같습니다 (최소한 Eclipse에서는).자바 라이브러리 모듈이있는 안드로이드 스튜디오 테스트 리소스를로드 할 수 없습니다.

자바 플러그인에 대한 의미 :

src/main/java 
src/main/test 
src/test/java 
src/test/resources 

를 내가 내 JUnit 테스트를로드하려는 CRT 파일이 자원 디렉토리 아래. 어떤 명령을 사용할 때 그것은 리소스에 대해 null을 반환합니다. 그러나 리소스가 빌드 폴더에 있음을 확인했습니다. 내가 시도

어떤 것들은 :

getClass().getClassLoader().getResourceAsStream("cert_format_der.crt").read(); // NPE 
getClass().getClassLoader().getResourceAsStream("/cert_format_der.crt").read(); // NPE 
getClass().getClassLoader().getSystemResourceAsStream("/cert_format_der.crt").read(); // NPE 

감사

+0

나는 android studio에서 gradle 명령 'test'를 사용해도 작동한다는 것을 알게되었습니다. – nibuen

+0

큰 질문입니다. – Jon

답변

18

이이 IntelliJ를 어떻게 Gradle을 올바르게 테스트 sourcesets에 대한 자원 디렉토리를 설정하지 않는 버그 것 같다 밝혀졌습니다.

모듈에 대한 build.gradle에이를 추가하면 수정 :

sourceSets { 
    test { 
     output.resourcesDir = output.classesDir 
    } 
} 
+2

나는 내가 한 번 이상 upvote 수 있기를 바랍니다. – Jon

+1

해결 방법이있는 문제를 따르려는 분은 https://code.google.com/p/android/issues/detail?id=64887 및 게시 문제는 보류 중입니다. https://code.google.com/p/android/issues/detail? id = 75991 – JCricket

+0

작동하지 않습니다. 테스트 자원은 디렉토리를 빌드하기 위해 복사되지 않으므로 classpath에는 복사되지 않습니다. – Sunnyday

4

대신 클래스 출력 디렉터리에 자원을 발산의 - nibbuen에 의해 제안 -을 만지지도 가능 출력 디렉토리에 저장하고 명시 적으로 종속 항목으로 추가하십시오.

dependencies { 
    runtime files(sourceSets.test.output.resourcesDir) 
} 
+0

은 매력처럼 작동했습니다! 감사! – Noya

+0

시도했습니다. 빌드 디렉토리에는 테스트 자원이 없습니다. – Sunnyday

관련 문제