Câu hỏi của tôi là: Làm cách nào để tạo một dự án thử nghiệm độc lập Android Android cho thư viện Android?Dự án thử nghiệm độc lập cho dự án thư viện trên Android
Tôi đã có thư viện Android (được đánh dấu là "Thư viện" trong cài đặt dự án) và dự án Android chứa các lớp kiểm tra JUnit của tôi. Dự án kiểm tra tham chiếu chính xác thư viện Android (trong cài đặt dự án trong "Android").
Thư viện của tôi nằm trong gói com.mayastudios
. Tất cả các trường hợp thử nghiệm của tôi cũng nằm trong cùng một gói (nhưng trong một dự án khác). Vì vậy, về cơ bản tôi có một cái gì đó như thế này:
+- MyLibraryProject
+- src
+- com/mayastudios/MyClass.java
+- AndroidManifest.xml
+- ...
+- MyTestProject (references MyLibraryProject)
+- test
+- com/mayastudios/MyClassTests.java
+- AndroidManifest.xml
+- ...
Dưới đây là manifest Android cho dự án kiểm tra:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.spatialite.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.mayastudios" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application android:label="Spatialite-NewApi-UnitTests">
<uses-library android:name="android.test.runner" />
</application>
</manifest>
Tuy nhiên, khi tôi chạy dự án kiểm tra (từ Eclipse với ADT, sử dụng "Chạy dưới dạng -> Android JUnit Test") Tôi nhận được lỗi sau:
Unable to find instrumentation target package: com.mayastudios
Đây là đồng Nhật ký bảng điều khiển mplete:
[2012-04-24 17:24:20 - spatialite-test] Android Launch!
[2012-04-24 17:24:20 - spatialite-test] adb is running normally.
[2012-04-24 17:24:20 - spatialite-test] Performing android.test.InstrumentationTestRunner JUnit launch
[2012-04-24 17:24:20 - spatialite-test] Automatic Target Mode: using device '3732FBC2711300EC'
[2012-04-24 17:24:20 - spatialite-test] Uploading spatialite-test.apk onto device '3732FBC2711300EC'
[2012-04-24 17:24:20 - spatialite-test] Installing spatialite-test.apk...
[2012-04-24 17:24:22 - spatialite-test] Success!
[2012-04-24 17:24:22 - spatialite-test] Launching instrumentation android.test.InstrumentationTestRunner on device 3732FBC2711300EC
[2012-04-24 17:24:22 - spatialite-test] Collecting test information
[2012-04-24 17:24:23 - spatialite-test] Test run failed: Unable to find instrumentation target package: com.mayastudios
Tôi đã cố xóa thẻ <instrumentation>
khỏi tệp kê khai không hoạt động. Cách duy nhất để làm việc này cho đến nay là tạo dự án Android mặc định (với Hoạt động), tham khảo dự án thử nghiệm của tôi và sử dụng tên gói của dự án Android mặc định này là targetPackage
theo <instrumentation>
. Nhưng đó không phải là điều tôi muốn. Tôi muốn một dự án thử nghiệm độc lập.
Mọi đề xuất?
Thiết bị đo lườngTestRunner phải nhắm mục tiêu trên một gói ứng dụng cụ thể, trong khi chính dự án thư viện không cho phép xuất dưới dạng apk. Tôi đã giải thích điều này chi tiết hơn tại [ở đây] (http://stackoverflow.com/questions/10172636/unable-to-find-instrumentation-target-package-com-xyz/10173034#10173034). – yorkw
Vâng, tôi hiểu rồi. Tôi chỉ nghĩ rằng test.apk có thể tự chạy vì nó được cài đặt trên thiết bị. –
Nó hoạt động như tôi mong đợi. Xem câu trả lời của tôi dưới đây. –