2015-08-24 34 views
25

Tôi có cấu trúc thư mục sau đây trong Android Studio:thử nghiệm Android nguyên nguồn

├── androidTest 
│   ├── java 
│   └── res 
│    └── raw 
│     └── test_file 
└── main 
    ├── java 
    └── res 
     └── raw 
     └── app_file 

Tôi đang cố gắng để truy cập vào tài nguyên test_file mà tồn tại trong thư mục thô trong những yếu tố androidTest. Đây là mã bên trong trường hợp thử nghiệm Robotium kế thừa từ ActivityInstrumentationTestCase2:

InputStream is = this.getInstrumentation() 
       .getContext() 
       .getResources() 
       .openRawResource(R.raw.test_file); 

Android Studio sẽ phát hiện lỗi tham chiếu vì không thể tìm thấy tài nguyên. Lỗi chính xác là "Không thể phân giải biểu tượng test_file".

Tôi làm cách nào để tham chiếu mẫu tài nguyên này là một trường hợp thử nghiệm, tồn tại trên gói tài nguyên androidTest?

+0

Bạn có một công cụ để tạo cây cho bạn không? –

+0

Vâng, công cụ bash 'tree' – jlhonora

+0

Cảm ơn bạn vì mẹo –

Trả lời

32

Theo mặc định, dự án androidTest của bạn sẽ bao gồm lớp R của ứng dụng, nhưng tài nguyên của androidTest sẽ được tạo thành một tệp riêng biệt. Hãy chắc chắn rằng bạn nhập các lớp R từ dự án thử nghiệm của bạn:

import com.your.package.test.R; 

[..] 

getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file); 

Bạn cũng có thể trực tiếp tham khảo lớp R dự án thử nghiệm của:

getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file); 
+3

Tôi có cùng cấu trúc tệp như OP, nhưng 'raw' không được tạo cho biến thể' androidTest'. –

+0

@YaroslavMytkalyk loại tệp nào bạn đang đưa vào thư mục thô? – jlhonora

+0

@jlhonora một tệp nhị phân không có phần mở rộng. Cố gắng đổi tên nó thêm một số phần mở rộng tùy ý, mà không thay đổi bất cứ điều gì. –

9

tôi đã có androidTest nguồn lực đúng chỗ (src/androidTest/res) và Tôi vẫn không thể truy cập chúng qua <normal.package>.test.R. Tôi đã dành rất nhiều thời gian googling cố gắng tìm ra những gì đang xảy ra ..

I CUỐI CÙNG vấp vào câu trả lời. Nếu bạn đang xây dựng một số buildType nơi bạn đã chỉ định một applicationIdSuffix, thì tệp của bạn là <applicationId><applicationIdSuffix>.test.R !!!!

ví dụ:

applicationId "com.example.my.app" 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 

nếu bạn đã androidTest tài nguyên trong thư mục bên phải, sau đó bạn chỉ có thể truy cập chúng qua com.example.my.app.debug.test.R !!!!

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