2013-05-22 35 views
31

Chưa có quy ước nào cho điều này, nhưng làm cách nào để cấu trúc thư mục thử nghiệm cho Android Studio, bây giờ những gì được nêu trên trang Android testing fundamentals khác nhau?Làm cách nào để cấu trúc thư mục thử nghiệm dự án trong Android Studio?

Đặc biệt, mọi gợi ý về cách thực hiện các thử nghiệm jUnit và chạy trên Android Studio sẽ hữu ích, cảm ơn.

Ngoài ra, bằng cách sử dụng công cụ android không thực sự hữu ích, vì mọi thứ hơi khác một chút so với Android Studio.

Cập nhật:

Tôi đã cố gắng thiết lập thư mục thử nghiệm và chạy nó, nhưng tất cả tôi nhận được như sau:

Running tests 
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner} 
Empty test suite. 

Tôi cũng đã thử thêm một AndroidManifest chuẩn. tệp xml để kiểm tra trong đó.

Trả lời

59

CẬP NHẬT

Bắt đầu từ Công cụ xây dựng 19.1.0 và xây dựng Plugin 0.11.0 file build.gradle cần có testPackageName đổi tên thành testApplicationId (còn PACKAGENAME nên đổi tên thành androidId)

Kể từ plugin xây dựng 0.9.0 Thư mục instrumentTest được đổi tên thành androidTest. Đó là tất cả những gì chúng ta cần để thử nghiệm.

Dưới đây là ví dụ về 0,11 + DSL

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
     androidId "org.homelab.lab" 
     testApplicationId "org.homelab.lab.test" 
     testInstrumentationRunner "org.homelab.lab.test.Runner" 
    } 

    ... 
} 

gotchas:. Nếu xây dựng tập tin của bạn bao gồm định nghĩa về testPackageNametestInstrumentationRunner, loại bỏ chúng

Đối với phiên bản 0.5.0 - 0.8. +

Android Stud io sử dụng plugin Gradle phiên bản 0.5 + + theo nguyên tắc Gradle SourceDir.

Android Studio project structure

Làm thế nào để làm cho nó hoạt:
1.update SDK
2.install hoặc cập nhật Gradle 1,6 (vấn đề với 1,7 báo cáo) hoặc gắn bó với gradle wrapper
sử dụng 3.don't Android Studio để chạy nhiệm vụ đo đạc, sử dụng lệnh gradle

gradle connectedCheck 

sử dụng 4.don't cùng gói cho thử nghiệm và apk chính
5.kiểm tra kết quả sử dụng trình duyệt

<project>/build/reports/instrumentTests/index.html 

Gotchas:
Nếu gói thử nghiệm và gói chính đều giống nhau nó có thể tạo ra TestSuite trống. Kết quả là gây hiểu lầm khi Gradle báo cáo không có vấn đề nhưng báo cáo cho thấy rằng không có lớp nào đã được kiểm tra.

EDIT:

Dưới đây là một phần của build.gradle mà cấu hình thử nghiệm công cụ cần thiết trước khi 0.9.0:

android { 
    compileSdkVersion 14 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 17 
     testPackageName "org.homelab.lab.test" 
     testInstrumentationRunner "org.homelab.lab.test.Runner" 
    } 

    ... 
} 

dự án ví dụ https://github.com/swavkulinski/android-studio-instrumentation-test

+1

Cảm ơn cho câu trả lời. Cuối cùng tôi đã quay lại với Eclipse, vì tôi là một người mới bắt đầu thử nghiệm cho Android. Tôi chắc chắn Google sẽ làm mọi việc dễ dàng hơn khi họ cập nhật Android Studio trong các lần lặp lại trong tương lai –

+0

Có đây là bản xem trước sớm.Để bây giờ dễ dàng hơn nhiều để làm điều tương tự bằng cách sử dụng vanilla IntelliJ với JetGradle. Vì một số lý do tôi không thể tìm thấy JetGradle trong Android Studio. – robotoaster

+0

@robotoaster: Chúng tôi có nên cập nhật build.gradle để chỉ định vị trí của các thử nghiệm không? – dannyroa

0

tôi có một cách khác để giải quyết vấn đề này, nếu lý do của bạn chỉ là vấn đề của cấu hình chạy.

kiểm tra cấu hình chạy của bạn, nếu cấu hình của dự án của bạn là thử nghiệm Android nhưng ứng dụng không Android và sau đó bạn sẽ phải đối mặt

"Running tests 
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner} 
Empty test suite." 

để xóa các cấu hình thử nghiệm Android và thêm một cấu hình ứng dụng chạy Android cho peoject của bạn , bạn có thể chạy nó.

1

Giờ đây trong Android Studio, bạn có thể thiết lập các công cụ kiểm tra bằng cách đơn giản tuân thủ quy ước đặt các thử nghiệm trong instrumentDirectory. Gradle chỉ cần biết về bất kỳ depencies mà bạn có, mà trong trường hợp của tôi là Robotium:

Android Studio Screenshot

dependencies { 
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.0.+' 
} 

Khi thử nghiệm được hoàn tất, bạn sẽ có kết quả hiển thị trong giao diện, vì vậy bạn không phải sử dụng bất kỳ dòng lệnh nào cả! Bạn cũng có thể nhấp chuột phải vào mô-đun bên trên bài kiểm tra JUnit để chạy tất cả các bài kiểm tra JUnit.

+1

Đây là một mục tiêu di chuyển, bạn có thể thêm những gì "bây giờ" có nghĩa là đối với các phiên bản gradle gradle và android. –

+0

chính xác, bây giờ tên thư mục là androidTest –

1

Tôi cũng gặp sự cố này. AndroidStudio chỉ đang xây dựng và cài đặt APK ứng dụng chính cho thiết bị và không thực hiện các kiểm tra với thông báo sau:

Chạy thử nghiệm bắt đầu Chạy thử không thành công: Không thể tìm thấy thông tin thiết bị cho: ComponentInfo {com.example.app.test /android.test.InstrumentationTestRunner}

Bộ kiểm tra trống.

Tuy nhiên, việc chạy mục tiêu của mục tiêu là connectedCheck Gradle đã tạo và cài đặt hai APK và thực hiện thành công các thử nghiệm thiết bị đo đạc. Hóa ra bạn có thể yêu cầu Gradle lắp ráp và cài đặt APK thiết bị một mình bằng cách chạy mục tiêu installDebugAndroidTest. Sau khi chạy mục tiêu này, AndroidStudio đã có thể chạy thử nghiệm thiết bị đo đạc tốt và thậm chí có thể đính kèm trình gỡ lỗi! Tôi đoán rằng bạn sẽ cần phải làm mới APK thiết bị mỗi khi bạn thay đổi bản thân bài kiểm tra, nhưng không phải là khác.

Instrumentation gói ứng dụng được cài đặt trên các thiết bị có thể được liệt kê bởi chạy: adb shell pm list instrumentation

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