簡體   English   中英

Android上的圖書館項目的獨立測試項目

[英]Stand-alone test project for a library project on Android

我的問題是: 如何為Android庫創建Android 獨立測試項目?

我有我的Android (在項目設置中標記為“Library”)和一個包含我的JUnit測試類的Android項目。 測試項目正確引用Android庫(在“Android”下的項目設置中)。

我的源代碼位於com.mayastudios包中。 我的所有測試用例也都位於同一個包中(但在不同的項目中)。 所以基本上我有這樣的事情:

+- MyLibraryProject
   +- src
      +- com/mayastudios/MyClass.java
   +- AndroidManifest.xml
   +- ...
+- MyTestProject (references MyLibraryProject)
   +- test
      +- com/mayastudios/MyClassTests.java
   +- AndroidManifest.xml
   +- ...

這是測試項目的Android清單:

<?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>

但是,當我運行測試項目時(從帶有ADT的Eclipse,使用“Run As - > Android JUnit Test”),我收到以下錯誤:

Unable to find instrumentation target package: com.mayastudios

這是完整的控制台日志:

[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

我試圖從清單中刪除無效的<instrumentation>標簽。

我到目前為止工作的唯一方法是創建一個默認的Android項目(帶有一個Activity),從我的測試項目中引用它,並使用這個默認Android項目的包名稱作為<instrumentation>下的targetPackage 但這不是我想要的。 我想要一個獨立的測試項目。

有什么建議?

啊,答案很簡單。 錯誤發生在第3行的測試項目的Android清單中:這里提到了錯誤的包。 所以糾正后的清單看起來像這樣:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mayastudios"
    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>

對於那些說你需要三個項目(圖書館,測試項目,測試項目)的人:他們錯了。 圖書館項目和測試項目就足夠了。 測試項目甚至不需要包含Activity。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM