2013-06-04 29 views
11

Ứng dụng Android của chúng tôi cần thử nghiệm tự động và nhóm của chúng tôi đang sử dụng Robotium để xử lý điều đó cho chúng tôi. Đây không phải là vấn đề đối với các bài kiểm tra đơn vị, nhưng chúng tôi cũng đang viết một tập hợp các bài kiểm tra tích hợp đầu cuối để tập thể dục không chỉ cho khách hàng bởi các máy chủ back-end. Tôi đã có một số xét nghiệm để thực hiện điều này, nhưng nếu có thể, tôi muốn tách riêng chúng ra khỏi các bài kiểm tra đơn vị để các tích hợp liên tục của chúng ta không yêu cầu máy chủ đang chạy để hoàn thành.Làm cách nào để thực hiện Kiểm tra Tích hợp trên Android với Hệ thống Xây dựng Gradle mới?

Chúng tôi đang sử dụng hệ thống xây dựng Gradle mới sáng bóng. Tôi tự hỏi nếu tôi có thể làm một cái gì đó giống như một hương vị chỉ thử nghiệm hoặc một tiểu dự án phụ thuộc vào APK cha mẹ để làm cho nó đi. Tôi đã thử làm cho công việc này với một dự án riêng biệt hoàn toàn bằng cách sử dụng các hướng dẫn Robotium để thử nghiệm một bản sửa lỗi mã nguồn ít, nhưng nó không hoạt động. Có lẽ vì tôi đang ở trên phần cứng thực sự và không phải là một trình giả lập. Tôi đã có may mắn với giả lập, ngay cả với việc tăng tốc phần cứng được cài đặt.

Bất kỳ lời khuyên nào hoặc tôi có nên giữ hơi thở và cuộn với các bản dựng của mình yêu cầu máy chủ tích hợp khả dụng khi các bản dựng đang diễn ra không?

Trả lời

11

Theo số Maven instructions tất cả những gì bạn cần làm là thêm robotium-solo làm phụ thuộc biên dịch.

repositories { 
    mavenCentral() 
} 

dependencies { 
    instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' 
} 

Điều này sẽ đảm bảo bạn có tệp robotium-solo.jar trong đường dẫn lớp học của mình. Sau đó, xác định các thử nghiệm của bạn trong thư mục src/instrumentTest và chạy gradle build. Xem có hiệu quả không?

Tôi sẽ giúp tôi có thể, khi chúng tôi chuyển đổi từ maven sang gradle khoảng một năm trước.

* EDIT OP muốn xét nghiệm để chạy riêng biệt từ một xây dựng gradle, vì vậy giải pháp là để xác định một nguồn tùy chỉnh thiết lập như sau:

sourceSets { 
    integrationTest { 
     // Gives you access to the compiled classes in your tests 
     compileClasspath += main.output 
     runtimeClasspath += main.output 
    } 
} 

dependencies { 
    integrationTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' 
} 

// To run the tests: ./gradlew integrationTest 
task integrationTest(type: Test) { 
    testClassesDir = sourceSests.integrationTest.output.classesDir 
    classpath = sourceSets.integrationTest.runtimeClasspath 
} 

Lưu ý: Tôi không có SDK Android được cài đặt trên máy tính này. Nếu main.output không hoạt động, hãy thử với andriod.sourceSets.main.output và xem điều đó có hoạt động hay không.

+0

Tôi đã làm việc đó. Những gì tôi muốn là một cách để tách biệt các bài kiểm tra tích hợp phụ thuộc vào máy chủ của tôi từ thử nghiệm không phụ thuộc vào máy chủ của tôi để Jenkins không yêu cầu máy chủ sản phẩm đang chạy hoạt động. – Argyle

+0

Ah, tôi hiểu rồi. Trong trường hợp đó, hãy xem xét tạo một nguồn tùy chỉnh trong 'build.gradle' được gọi là' integrationTest'. Sau đó bạn sẽ có 'compileIntegrationTest' có sẵn cho bạn trong phần đóng của phụ thuộc của bạn, nơi bạn có thể thêm robotium. Thêm một nhiệm vụ để chạy các bài kiểm tra tích hợp này. Bằng cách chỉ định một sourceSet 'gradle build' tùy chỉnh sẽ không chạy chúng theo mặc định. Để chạy chúng, bạn sẽ cần phải thêm một nhiệm vụ tùy chỉnh. Tôi sẽ sửa lại câu trả lời của mình bằng một số nguồn. – Joe

+3

Nó sẽ không phải là 'instrumentTestCompile'? –

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