Android Studio導入現有的單元測試“無法找到檢測信息”


Answers

就我而言,解決方案是:

  • 查看>工具窗口>構建變體
  • 選擇一個*調試變體
Question

所以我正在嘗試我們的Android Studio並測試一個在eclipse中工作的項目。 我得到了一切編譯和應用程序將推出很好,但我不能讓我的單元測試和工作。 我最終通過添加我的應用程序li​​b文件夾作為依賴項來編譯他們,但我不認為我的運行配置是正確的,因為每當我運行我的測試,我得到這個錯誤

Installing <packagename>
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/<packagename>"
pkg: /data/local/tmp/<packagename>
Success


Running tests
Test running started
Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/android.test.InstrumentationTestRunner}
Empty test suite.

編輯:對於所有新來的人來說,自從我最初發布這個問題以來,Android Studio的狀態已經發生了很大的變化,但是許多有幫助的人仍然繼續為這個錯誤發布他們特定的解決方案。 我建議通過激活排序,並檢查出最新的答案。




由於這些答案都沒有幫助我,所以我想分享我的解決方案給任何像我一樣絕望的人。 :)

由於我正在使用的測試庫,我需要通過添加multiDexEnabled true到我的Gradle構建來啟用multidex支持。 我不確定我是否已經完全實現了multidex支持(自從我上次實現它以來,正確的方式已經發生了變化),但是最終,我並沒有最終需要它,並從我的構建中刪除該行修復了錯誤。 我的團隊在工作中遇到了一些與啟用multidex支持有關的測試問題...在典型的Android風格。




這只適用於AndroidStudio版本<2.3

在我的情況下,選擇了錯誤的儀表運動員。

我通過在測試的運行/調試配置中指定工具運行器來解決這個問題(見下文)。 在那裡你可以從列表中選擇一個跑步者。

您可以找到運行/調試配置: 運行 - >編輯配置...




它接縫你沒有好的項目結構。

  1. 打開AndroidManifest.xml並檢查它是否有

    <instrumentation android:name="android.test.InstrumentationTestRunner"
                         android:targetPackage="com.example.YourClass"
                         android:label="Tests for com.example.YourClass"/>

如果沒有下一步:

  1. 重新組織你的目錄結構如下:(這是從官方來源的推薦)
        MyProject/
              AndroidManifest.xml
              res/
                  ... (resources for main application)
              src/
                  ... (source code for main application) ...
              tests/
                  AndroidManifest.xml
                  res/
                      ... (resources for tests)
                  src/
                      ... (source code for tests)
  1. 你看到你需要有內部測試模塊。
    要在Idea IDE中創建它,請執行下一個文件 - >新建模塊 - >測試模塊 。 創建完成後,您可以看到一個新的AndroidManifest.xml。 它裡面有儀器聲明。



對我來說,問題是有這種依賴性:

debugCompile 'com.android.support.test:rules:0.2'

我刪除後,我的測試被發現並再次運行。

請注意,我沒有得到“無法找到檢測儀”的消息,但沒有找到“沒有測試”的消息。




我通過改變解決了這個問題

android.test.InstrumentationTestRunner 

com.android.test.runner.MultiDexTestRunner

在EditConfigurations - > Specific Instrumentation Runner(可選)選項卡中。

原來,因為我的應用程序正在使用MultiDex,我還需要將測試運行器更改為MultiDexTestRunner。

更新:

至於@dan的評論, InstrumentationTestRunner反而不贊成使用AndroidJUnitRunner