2016-05-10 3 views
3

私はAndroidスタジオテストをいくつか持っています。カスタムテストランナーは、Android Studio 2.1にアップグレードしていくつかのライブラリバージョンをバンプしてから、時間の経過と共にいくつかのことをしました。今、私のテストは、StackOverflowについて何百万回も尋ねられている恐ろしいUnable to find instrumentation info for: ComponentInfo{}でもう実行されません。テストコードがコンパイルされず、非テストとして扱われています

さらに調査すると、Android Studioは単にテストコードをコンパイルしないように見えます。つまり、テストランナー用のComponentInfoは見つからないため、コードは含まれません。私は、テストを実行しようとすると問題を起こさないコンパイルエラーをテストコードに追加することで検証しました。

さらに、テストコードは、ハイライトの構文で非テストコードのように扱われるようですか?例として、テストランナーはandroid.support.test.runner.AndroidJUnitRunnerをインポートしますが、runnerは、そのライブラリが欠けているように赤で強調表示されます(しかし、それはグラデルファイル内にandroidTestCompileとして表示されます)。それをcompileに変更すると、シンタックスハイライトは幸せです。しかし、テストコードはテストコードのように黄色でプロジェクトビューに表示されます。

Android Studioがテスト用にコンパイルするものが何であるかはわかりません。設定は簡単です。私のファイル階層がつまり

app 
+--src 
+ +--main 
+ | +--java 
+ |  +--com/package/files 
+ | 
+ +--androidTest 
+  +--java 
+  +--com/package/files 

で、アプリ/ srcに/メイン/ javaの/ COM/...と、アプリ/ SRC/androidTest /のJava/COM ....メインのアプリとテストの両方があります同じパッケージを使用してください。

build.gradle(関連部分):テスト用

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 'Google Inc.:Google APIs:23' 
    buildToolsVersion '24.0.0 rc3' 
    defaultConfig { 
     multiDexEnabled = true 
     applicationId 'com.package' 
     minSdkVersion 10 
     targetSdkVersion 23 
     versionCode 2 
     versionName '0.8a' 
     signingConfig signingConfigs.release 
     testInstrumentationRunner 'com.package.TestRunner' 
    } 
    buildTypes { 
     release { 
      signingConfig signingConfigs.release 
     } 
     debug { 
      signingConfig signingConfigs.release 
     } 
    } 
    productFlavors { 
    } 
    dexOptions { 
     javaMaxHeapSize "4g" 
    } 
    packagingOptions { 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE-FIREBASE.txt' 
     exclude 'META-INF/NOTICE' 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 

    lintOptions { 
     checkReleaseBuilds true 
     abortOnError true 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile 'com.android.support.test:runner:0.5' 
    androidTestCompile 'com.android.support.test:rules:0.5' 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' 
    androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2' 
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3' 
    androidTestCompile 'com.android.support:support-annotations:23.1.1' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:support-v4:23.1.1' 
    [...] 
} 

apply plugin: 'com.google.gms.google-services' 

実行/デバッグの構成は、同様に簡単です - それは、Androidのテストだ、計装ランナーがcom.package.TestRunnerです。私は何度も清掃/再建を試みました。

答えて

2

私はそれを投稿してはいけないという答えはとても恥ずかしいです。

すべてのモジュールの "ビルドバリアント"が "リリース"に設定されているため、テスト用のものはコンパイルされませんでした。それを "Debug"に設定することで問題は解決しました。もしAndroid Studioがリリースシャードを使っている間にテストを実行することについての警告のように、それについてもう少しボーカルであればいいでしょう。

+0

共有いただきありがとうございます。私は同じ問題を抱えていましたが、カスタムフレーバーで気づくのが難しくなりました:・)ありがとう、ありがとう! –

関連する問題