2014-07-21 28 views
10

Tôi có một dự án Android Studio với mô-đun bên trong thư viện Java có các bài kiểm tra có tài nguyên kiểm tra. Tuy nhiên, khi tôi chạy các bài kiểm tra, tôi không thể truy xuất các hiện vật. Điều này dường như làm việc tốt trong một dự án thuần túy java gradle (trong nhật thực ít nhất).Android Studio với Mô-đun thư viện Java Không thể tải các tài nguyên kiểm tra

nghĩa Đối với plugin java:

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

Dưới thư mục nguồn tôi có một tập tin crt mà tôi muốn tải trong thử nghiệm junit tôi. Khi sử dụng bất kỳ lệnh nào tôi gặp phải, nó trả về null cho tài nguyên. Tuy nhiên, tôi đã xác nhận các tài nguyên có trong thư mục xây dựng.

Một số điều I Tried:

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 

Cảm ơn

+0

Tôi thấy rằng bằng cách sử dụng lệnh gradle 'test' bên trong android studio hoạt động. – nibuen

+0

câu hỏi hay. – Jon

Trả lời

18

Hóa ra đây có vẻ là một lỗi với Intellij và làm thế nào Gradle không thiết lập các thư mục tài nguyên cho sourcesets thử nghiệm một cách chính xác.

Thêm này đến build.gradle cho các mô-đun Sửa chữa nó:

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

tôi ước tôi có thể upvote nhiều hơn một lần. – Jon

+1

Bất kỳ ai muốn theo dõi vấn đề, ban đầu với giải pháp thay thế: https://code.google.com/p/android/issues/detail?id=64887 và sự cố trực tiếp đang chờ giải quyết có tại đây: https://code.google.com/p/android/issues/detail? id = 75991 – JCricket

+0

không hoạt động. tài nguyên thử nghiệm không được sao chép để xây dựng thư mục và do đó không phải trong classpath. – Sunnyday

4

Thay vì phân kỳ các nguồn lực để các thư mục đầu ra lớp - theo đề nghị của nibbuen - nó cũng có thể không chạm vào thư mục đầu ra và thêm nó một cách rõ ràng như là một phụ thuộc.

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

hoạt động như một sự quyến rũ! Cảm ơn! – Noya

+0

Đã thử. nhưng thư mục build không có tài nguyên thử nghiệm. – Sunnyday

Các vấn đề liên quan