2017-01-25 25 views
5

Chúng tôi có 2 hương vị sản phẩm trong ứng dụng của chúng tôi và một hương vị có một lớp (FlavorSpecificClass) mà loại kia không có. Chúng tôi có một bài kiểm tra junit cho FlavorSpecificClass trong thư mục src/test mà sẽ không biên dịch khi chúng tôi đang ở trên biến thể cốt lõi của chúng tôi bởi vì lớp không tồn tại trong biến thể đó.Cách kiểm tra Đơn vị (junit) Hương vị Android/Biến thể - lớp không tồn tại

Tôi không thể tìm cách thử nghiệm đơn vị riêng biệt trên mỗi biến thể và mã sẽ không biên dịch trong biến thể cốt lõi của chúng tôi trừ khi tôi nhận xét tham chiếu đến FlavorSpecificClass. Làm sao để tôi có được xung quanh này?

Trả lời

3

Giả sử bạn đang sử dụng gradle.

Vì vậy, bạn cần có một thư mục khác nằm ở cùng một nơi với thư mục 'thử nghiệm' của bạn. Đặt tên cho thư mục là 'test [BuildVariant]' và có các kiểm tra cho biến thể xây dựng bên trong thư mục đó.

Giả sử bạn đã xây dựng debug biến thể, cấu trúc thư mục của bạn sẽ giống như thế này, nếu bạn muốn kiểm tra các lớp học mà chỉ là trong debug build biến

-debug/java/... 
-main/java/... 
-test/java/[your tests] 
-testDebug/java/[your tests for build variant debug] 
+0

Có sử dụng gradle. Tôi đã thử điều này và nó hoạt động để chỉ chạy thử nghiệm trong thư mục testDebug khi biến thể gỡ lỗi được chọn tuy nhiên vấn đề với biến thể chính không biên dịch do lớp chỉ tồn tại trong gỡ lỗi. Lớp này chỉ được đề cập trong các bài kiểm tra trong thư mục testDebug, tuy nhiên biến thể chính sẽ vẫn không biên dịch và chạy. – DDM

+0

Sau đó, điều đó có nghĩa là biến thể chính của bạn muốn lớp đó ở đó. Bạn có thể cần thêm lớp đó vào tất cả các biến thể. Các biến thể khác có thể có phương thức no-op. –

+1

Chúng tôi đã tìm ra. Khi tôi đã tạo thư mục testDebug, tôi đã tiến hành tạo thư mục java bằng cách chọn New -> Folder -> Java Folder. Điều này tự động được thêm vào 'src/testDebug/java' vào bộ nguồn chính của tôi trong build.gradle. Những gì làm việc là chỉ cần tạo thư mục java bằng cách sử dụng New -> Directory và sau đó tập tin build.gradle là không bao giờ sửa đổi. – DDM