だから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はこの質問を最初に投稿してからスタジオが大きく変化しましたが、多くの役に立つ人々がこのエラーに対する特定の解決策を投稿し続けています。アクティブでソートし、最新の回答を最初にチェックアウトすることをお勧めします。
次のようにbuild.gradle
でtestInstrumentationRunnerが定義されている場合:
Android {
defaultConfig {
testInstrumentationRunner "com.google.Android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
実行構成ウィンドウで、テスト用のAndroid Studio/IntelliJ実行構成でまったく同じ「特定のインスツルメンテーションランナー」を使用していることを確認してください。
私の場合、解決策は次のとおりです。
説明と解決策
テストアプリケーションのマニフェストで宣言されたtargetPackageがテスト対象のアプリケーションのマニフェストで宣言されたパッケージと異なる場合、このエラー「instrumentationが見つかりません」が表示されます。
テスト対象のアプリケーション:
<manifest package="com.example.appbeingtested" … >
テストアプリケーション:
<instrumentation
Android:name="Android.test.InstrumentationTestRunner"
Android:targetPackage="com.example.appbeingtested" … />
変更してこの問題を解決しました
Android.test.InstrumentationTestRunner
に
com.Android.test.runner.MultiDexTestRunner
editConfigurations-> Specific Instrumentation Runner(オプション)タブ。
私のアプリはMultiDexを使用しているため、テストランナーもMultiDexTestRunnerに変更する必要があります。
更新:
@danコメントとして、InstrumentationTestRunner
は非推奨です。代わりにAndroidJUnitRunner
を使用してください。
私の場合、実行/デバッグ構成が間違っていました。
1つのソリューション:
実行/デバッグ構成に移動
実行->構成の編集...
テストクラスのAndroidテストを設定します
左側でAndroidテスト構成を選択します
またはプラスアイコンを使用して新しいものを作成し、名前を付けます。 ClassNameテスト
テストクラスを含むモジュールを選択します。最も単純なケースでは、テストクラスはアプリモジュールにあるため、appを選択します。
次の行でテスト構成を選択します。私が使う:
テストクラスを選択する
最後にターゲットデバイスを構成し、[OK]を選択します。
これはAndroidStudioバージョン<2.3でのみ機能します
私の場合、間違ったインスツルメンテーションランナーが選択されました。
テストの実行/デバッグ構成でインストルメンテーションランナーを指定することでこれを修正しました(以下を参照)。そこでリストからランナーを選択できます。
実行/デバッグ構成が見つかります:Run-> Edit Configurations ...
@Iuliia Ashomokと同じ問題があり、インターネットですべて試してみました。
まだ運がありません。
2日間の調査の結果、問題は携帯電話によって発生していることがわかりました。 .V。
私はもともとXiaomi Mi4iをテストデバイス(ルート化)として使用しており、テストを実行できませんでした。もちろん、以下のエラーが発生しました。
Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/Android.test.InstrumentationTestRunner}
ただし、Sony Xperia Z3(ルートなし)を使用すると、すべてが正常に機能します。
プロジェクト構造が良くないのが継ぎ目です。
AndroidManifest.xmlを開き、確認してください
<instrumentation Android:name="Android.test.InstrumentationTestRunner"
Android:targetPackage="com.example.YourClass"
Android:label="Tests for com.example.YourClass"/>
次の場合はNO:
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)
このエラーが発生しました。 CLIモードでSDKツールを使用します。そして、テストプロジェクトで「ant test」を起動するとエラーが発生しました。後で、テストプロジェクトをビルドしてインストールすらしなかったことに気付きました! (「ant debug install」を使用)したがって、テストを実行する前に、実行中の構成をチェックして、テストプロジェクトが効果的にビルドされたかどうかを確認する必要があります。それ以外の場合、Android StudioはGradleを使用します。よくわかりませんが、プロジェクトのGradle設定またはGradle設定ファイルを確認してください。
この回答では、履歴の問題について説明し、関連するすべての設定を要約します。
基本的に、計装テストランナーの構成には3つの場所があります。
EditConfigurations-> Generalタブ-> Specific Instrumentation Runner(オプション)
これはAndroid Studio 2.2以前のバージョンにのみ存在し、最新バージョンでは既に削除されています。
マニフェストファイルでは、テストランナーは次のように構成されています。
< instrumentation Android:name="Android.support.test.runner.AndroidJUnitRunner"
Android:targetPackage="com.mytestapp.test"/>
「Android.test.InstrumentationTestRunner」はAPIレベル24で廃止されているため、gradleファイルでランナーを構成する限り、この設定も必要ありません。
この設定を保持する場合は、ランナー名がgradleファイルで設定したものと一致することを確認してください。一致しない場合、このエラーも発生します。
Android {
.......
defaultConfig {
.......
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
}
私の同じクラスの場合、いくつかのテストケースはbuild.gradleで定義された正しいテストランナー(Android.support.test.runner.AndroidJUnitRunner)を選択し、一部のテストケースは定義されていないAndroid.test.InstrumentationTestRunnerを選択していました少なくともManifestまたはbuild.gradleで、または構成を編集します。理想的には、プロジェクトをGraldeと同期するオプションで解決されているはずですが、動作しませんでした。
最後に、.idea/workspace.xml
のメソッドに対して誤ったテストランナーが定義されているのを発見し、手動で変更し、問題を解決しました。
通常、これを編集することは想定されていませんAndroid Studioが生成したファイルですが、私にとっては最後のオプションとして機能しました。
これらの答えはどれも役に立たなかったので、私は自分と同じように必死な人にソリューションを共有したかったのです。 :)
私が使用していたテストライブラリのために、GradleビルドにmultiDexEnabled true
を追加してmultidexサポートを有効にする必要がありました。当初から完全にmultidexサポートが実装されているかどうかはわかりません(最後に実装してから適切な方法が変更されました)が、最終的にはそれを必要とせず、ビルドからその行を削除してエラーを修正しました。職場の私のチームには、マルチデックスサポートの有効化に関連するいくつかのテストの問題がありました…典型的なAndroidスタイル。
私にとって、問題はこの依存関係を持っていました:
debugCompile 'com.Android.support.test:rules:0.2'
削除した後、テストが見つかり、再度実行されました。
「インスツルメンテーションが見つかりません」というメッセージは表示されず、「テストが見つかりません」というメッセージが表示されることに注意してください。
私の場合、問題はデバイスにもありました。他のデバイスは正常に機能していました。単純なアンインストールと再インストールで修正されました。
遅延の問題であることが判明しました。インターネットソリューションを読んでしばらく待った後、自動的に修正されました。コードを再コンパイルしましたが、うまくいきました。