2014-09-05 27 views
20

Chúng tôi có yêu cầu không phổ biến về việc thực hiện các kiểm tra đơn vị trong ứng dụng Android của chúng tôi, sử dụng tài sản chỉ bắt buộc để thử nghiệm đơn vị.Thiết lập thư mục nội dung tùy chỉnh để kiểm tra đơn vị trong Android Studio

Với SDK dựa trên Eclipse, điều này đơn giản và rõ ràng - dự án thử nghiệm là một dự án riêng biệt với thư mục nội dung của riêng nó. Với Android Studio, điều này có nghĩa là một cái gì đó mà một cấu hình trong build.gradle (hoặc theo quy ước).

Kiểm tra đơn vị của chúng tôi đang thực thi, cuối cùng, nhưng tôi đã hết mọi đề xuất tôi tìm thấy liên quan đến thư mục tài sản tùy chỉnh (và, lý tưởng, hợp nhất). Dưới đây là những gì tôi đã thử:

  • Thêm đóng kiểm tra vào nguồnSets trong đóng cửa android (bằng cách đóng Tôi có nghĩa là giữa dấu ngoặc nhọn trong build.gradle).

    androidTest { 
        assets.srcDirs = ['src/androidTest/assets/'] 
    } 
    
  • điều tương tự, nhưng với "test" như tên của sourceSet (như trái ngược với "androidTest" ở trên) và cũng với "instrumentTest".

  • Kết hợp khác nhau ở trên, cộng với androidTest.setRoot ("test"), androidTest.setRoot ("androidTest"), cả hai đều khiến cho các bài kiểm tra đơn vị của chúng tôi không được nhận dạng ("bộ trống").

Câu hỏi này có thể được tuyên bố rộng rãi hơn là "cách người dùng sử dụng các thư mục khác nhau cho các bài kiểm tra đơn vị trong Android Studio".

Chúng tôi đã vượt qua tài liệu từ Android và chúng tôi không hiểu nó, sai, hoặc có lỗi ở đâu đó.

Mọi trợ giúp sẽ được đánh giá rất nhiều.

Trả lời

19

Tôi đã vấp phải câu trả lời cho câu hỏi của riêng mình, mà tôi đã ghi được giải thưởng "Tumbleweed" đáng thèm muốn dành cho các câu hỏi truyền cảm hứng cho sự thiếu quan tâm đặc biệt đáng chú ý. Không bao giờ-ít-nó có thể chứng minh hữu ích cho ai đó.

Cuối cùng, tôi sẽ mô tả đây là lỗi trong bản xây dựng gradle của Android nhưng trong trường hợp không có bất kỳ tài liệu kết luận nào sẽ phải giữ nguyên ý kiến.

Có vẻ như "androidTest/asset" không hoạt động. Tuy nhiên, "gỡ lỗi/tài sản" không. Vì vậy, không "debug/java" tình cờ để giải pháp là đặt bất kỳ và tất cả các nguồn lực thử nghiệm và mã vào gốc gỡ lỗi, với ngoại lệ của các bài kiểm tra đơn vị mình.

Tôi cũng đã thêm những sửa đổi sau đây để build.gradle tôi:

androidTest { 
     assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/', 'src/debug/assets/'] 
     java.srcDirs = ['src/main/java', 'src/androidTest/java', 'src/debug/java'] 
    } 

Và bây giờ tôi đã có chức năng kiểm tra đơn vị sử dụng tài sản và mocks chưa được biết đến việc phát hành xây dựng.

+3

Dường như Google đã sửa nó.Tôi đang sử dụng Android Studio 0.8.6 + gradle 1.12 và thư mục "androidTest/asset" hoạt động mà không cần bất kỳ tập lệnh bổ sung nào. – weidongxu

3

Tôi đang sử dụng Android Studio 1.3 + Gradle 1.2.3 và src/androidTest/asset không hoạt động đối với tôi. Tôi đặt tất cả mọi thứ trong src/debug mà không có bất kỳ thay đổi nào đối với build.gradle và nó đã hoạt động. Android dường như chọn các mục từ thư mục gỡ lỗi tự động trong khi xây dựng gói ứng dụng.

+0

Mẹo tuyệt vời @Chandan, điều này đã giải quyết được vấn đề của tôi. – ovidiu

3

Tôi không biết trước đó, nhưng tôi đã có thể tạo các thử nghiệm đơn vị được thiết bị Android, nơi tôi có thể đọc nội dung thử nghiệm hoặc nội dung sản xuất. Xem câu trả lời this để biết thêm thông tin.

+2

Liên kết bạn đã gửi, đã hữu ích EXTREMLY! Cảm ơn rất nhiều. Đây sẽ là câu trả lời được chấp nhận. –

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