web-dev-qa-db-ja.com

Android Studioは既存の単体テストをインポートします「計測情報が見つかりません」

だからAndroid Studioを試して、Eclipseで動作するプロジェクトをテストしています。すべてをコンパイルし、アプリケーションは正常に起動しますが、ユニットテストを実行できません。最終的に、アプリケーションのlibフォルダーを依存関係として追加してコンパイルしましたが、テストを実行するたびにこのエラーが発生するため、実行構成が正しいとは思いません

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はこの質問を最初に投稿してからスタジオが大きく変化しましたが、多くの役に立つ人々がこのエラーに対する特定の解決策を投稿し続けています。アクティブでソートし、最新の回答を最初にチェックアウトすることをお勧めします。

60
AJD

次のようにbuild.gradleでtestInstrumentationRunnerが定義されている場合:

Android {
    defaultConfig {
        testInstrumentationRunner "com.google.Android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"

実行構成ウィンドウで、テスト用のAndroid Studio/IntelliJ実行構成でまったく同じ「特定のインスツルメンテーションランナー」を使用していることを確認してください。

61
thoutbeckers

私の場合、解決策は次のとおりです。

  • 表示>ツールウィンドウ>ビルドバリアント
  • *デバッグバリアントを選択
19
Matt McClure

説明と解決策

テストアプリケーションのマニフェストで宣言されたtargetPackageがテスト対象のアプリケーションのマニフェストで宣言されたパッケージと異なる場合、このエラー「instrumentationが見つかりません」が表示されます。

  • テスト対象のアプリケーション:

    <manifest package="com.example.appbeingtested" … >
    
  • テストアプリケーション:

    <instrumentation
        Android:name="Android.test.InstrumentationTestRunner"
        Android:targetPackage="com.example.appbeingtested" … />
    
18
BenL

変更してこの問題を解決しました

Android.test.InstrumentationTestRunner 

com.Android.test.runner.MultiDexTestRunner

editConfigurations-> Specific Instrumentation Runner(オプション)タブ。

私のアプリはMultiDexを使用しているため、テストランナーもMultiDexTestRunnerに変更する必要があります。

更新:

@danコメントとして、InstrumentationTestRunnerは非推奨です。代わりにAndroidJUnitRunnerを使用してください。

16
aldok

私の場合、実行/デバッグ構成が間違っていました。

1つのソリューション:

  1. 実行/デバッグ構成に移動

    実行->構成の編集...

  2. テストクラスのAndroidテストを設定します

  3. 左側でAndroidテスト構成を選択します
    またはプラスアイコンを使用して新しいものを作成し、名前を付けます。 ClassNameテスト

  4. テストクラスを含むモジュールを選択します。最も単純なケースでは、テストクラスはアプリモジュールにあるため、appを選択します。

  5. 次の行でテスト構成を選択します。私が使う:

    • クラス:1つのクラスのすべてのテストを実行します。
  6. テストクラスを選択する

  7. 最後にターゲットデバイスを構成し、[OK]を選択します。

4
auerc89

これはAndroidStudioバージョン<2.3でのみ機能します

私の場合、間違ったインスツルメンテーションランナーが選択されました。

テストの実行/デバッグ構成でインストルメンテーションランナーを指定することでこれを修正しました(以下を参照)。そこでリストからランナーを選択できます。 1]

実行/デバッグ構成が見つかります:Run-> Edit Configurations ...

4
Petterson

@Iuliia Ashomokと同じ問題があり、インターネットですべて試してみました。

まだ運がありません。

2日間の調査の結果、問題は携帯電話によって発生していることがわかりました。 .V。

私はもともとXiaomi Mi4iをテストデバイス(ルート化)として使用しており、テストを実行できませんでした。もちろん、以下のエラーが発生しました。

Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/Android.test.InstrumentationTestRunner}

ただし、Sony Xperia Z3(ルートなし)を使用すると、すべてが正常に機能します。

2
VoidExplorer

プロジェクト構造が良くないのが継ぎ目です。

  1. AndroidManifest.xmlを開き、確認してください

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

次の場合はNO:

  1. ディレクトリ構造を次のように再編成します(これは official source からの推奨です)
        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. 内部testsモジュールが必要であることがわかります。
    Idea IDEで作成する場合ファイル->新規モジュール->テストモジュール。作成後、1つの新しいAndroidManifest.xmlを確認できます。そして、内部にinstrumentation宣言があります。
1
Yuliia Ashomok

このエラーが発生しました。 CLIモードでSDKツールを使用します。そして、テストプロジェクトで「ant test」を起動するとエラーが発生しました。後で、テストプロジェクトをビルドしてインストールすらしなかったことに気付きました! (「ant debug install」を使用)したがって、テストを実行する前に、実行中の構成をチェックして、テストプロジェクトが効果的にビルドされたかどうかを確認する必要があります。それ以外の場合、Android StudioはGradleを使用します。よくわかりませんが、プロジェクトのGradle設定またはGradle設定ファイルを確認してください。

0
godidier

この回答では、履歴の問題について説明し、関連するすべての設定を要約します。

基本的に、計装テストランナーの構成には3つの場所があります。

  1. EditConfigurations-> Generalタブ-> Specific Instrumentation Runner(オプション)
    これはAndroid Studio 2.2以前のバージョンにのみ存在し、最新バージョンでは既に削除されています。

  2. マニフェストファイルでは、テストランナーは次のように構成されています。

    < instrumentation Android:name="Android.support.test.runner.AndroidJUnitRunner"
           Android:targetPackage="com.mytestapp.test"/>

「Android.test.InstrumentationTestRunner」はAPIレベル24で廃止されているため、gradleファイルでランナーを構成する限り、この設定も必要ありません。
この設定を保持する場合は、ランナー名がgradleファイルで設定したものと一致することを確認してください。一致しない場合、このエラーも発生します。

  1. Gradleファイル内。
    これはAndroid Studio v2.3上記を使用する場合にのみ推奨される方法です。
    Android {
    .......
        defaultConfig {  
            .......  
            testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"  
        }   
    }
0
Weidian Huang

私の同じクラスの場合、いくつかのテストケースはbuild.gradleで定義された正しいテストランナー(Android.support.test.runner.AndroidJUnitRunner)を選択し、一部のテストケースは定義されていないAndroid.test.InstrumentationTestRunnerを選択していました少なくともManifestまたはbuild.gradleで、または構成を編集します。理想的には、プロジェクトをGraldeと同期するオプションで解決されているはずですが、動作しませんでした。

最後に、.idea/workspace.xmlのメソッドに対して誤ったテストランナーが定義されているのを発見し、手動で変更し、問題を解決しました。

通常、これを編集することは想定されていませんAndroid Studioが生成したファイルですが、私にとっては最後のオプションとして機能しました。

0
user7154703

これらの答えはどれも役に立たなかったので、私は自分と同じように必死な人にソリューションを共有したかったのです。 :)

私が使用していたテストライブラリのために、GradleビルドにmultiDexEnabled trueを追加してmultidexサポートを有効にする必要がありました。当初から完全にmultidexサポートが実装されているかどうかはわかりません(最後に実装してから適切な方法が変更されました)が、最終的にはそれを必要とせず、ビルドからその行を削除してエラーを修正しました。職場の私のチームには、マルチデックスサポートの有効化に関連するいくつかのテストの問題がありました…典型的なAndroidスタイル。

0
spaaarky21

私にとって、問題はこの依存関係を持っていました:

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

削除した後、テストが見つかり、再度実行されました。

「インスツルメンテーションが見つかりません」というメッセージは表示されず、「テストが見つかりません」というメッセージが表示されることに注意してください。

0
Ciske Boekelo

私の場合、問題はデバイスにもありました。他のデバイスは正常に機能していました。単純なアンインストールと再インストールで修正されました。

0
Bhiefer

遅延の問題であることが判明しました。インターネットソリューションを読んでしばらく待った後、自動的に修正されました。コードを再コンパイルしましたが、うまくいきました。

0
mohghaderi