web-dev-qa-db-ja.com

クラスが見つかりません、Android Studio 3.0.1、Room、Kotlinを使用したandroidTestの空のテストスイート

AndroidTestの実行に問題があります。

ここにgradleでの私のセットアップがあります:

apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
apply plugin: 'kotlin-kapt'

Android {
compileSdkVersion 26
defaultConfig {
    applicationId "com.blabla.shoppinglistapp"
    minSdkVersion 17
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
    }
 }
}

ext.daggerVersion = '2.11'
ext.roomVersion = '1.0.0'
ext.mockitoVersion = '2.11.0'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.Android.support:appcompat-v7:26.1.0'
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
implementation 'com.Android.support:design:26.1.0'
implementation 'com.Android.support:recyclerview-v7:26.1.0'

testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-Android:2.8.47'

androidTestImplementation 'com.Android.support.test:runner:1.0.1'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'

// ViewModel and LiveData
implementation "Android.Arch.lifecycle:extensions:1.0.0"
annotationProcessor "Android.Arch.lifecycle:compiler:1.0.0"

// RxJava
implementation 'io.reactivex.rxjava2:rxjava:2.1.5'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0'

// Room
implementation "Android.Arch.persistence.room:runtime:$roomVersion"
implementation "Android.Arch.persistence.room:rxjava2:$roomVersion"
kapt "Android.Arch.persistence.room:compiler:$roomVersion"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.2.10"
androidTestImplementation "Android.Arch.persistence.room:testing:$roomVersion"

// Gson
implementation 'com.google.code.gson:gson:2.8.2'
}

そして、ここにテストがあります(ほとんど何もありません):

@RunWith(AndroidJUnit4::class)
class ShoppingListDaoTest {
@Test
fun useAppContext() {
    // Context of the app under test.
    val appContext = InstrumentationRegistry.getTargetContext()
    assertEquals("com.blabla.shoppinglistapp", appContext.packageName)
}

private lateinit var database: ShoppingListDatabase

@Before
fun initDb() {
    // using an in-memory database because the information stored here disappears after test
    database = Room.inMemoryDatabaseBuilder(InstrumentationRegistry.getContext(),
            ShoppingListDatabase::class.Java)
            // allowing main thread queries, just for testing
            .allowMainThreadQueries()
            .build()
}

@After
fun closeDb() {
    database.close()
}


@Test fun testGetActiveShoppingListWhenNoActiveShoppingListInserted() {
    database.shoppingListDao().getActiveShoppingLists()
            .test()
            .assertNoValues()
}


}

テストを実行しようとすると、これが表示されます:

プロセスは終了コード1で終了しましたクラスが見つかりません: "com.blabla.shoppinglistapp.ShoppingListDaoTest"空のテストスイート。

そして、それは始まっていません

[〜#〜] update [〜#〜]

本当に悪いことに気づきました。 Android Studioで新しいプロジェクトを開始し、デフォルトのandroidTestを実行しようとすると、既知のエラーが表示されます。

Error:Gradle:Java.util.concurrent.ExecutionException:Java.util.concurrent.ExecutionException:com.Android.tools.aapt2.Aapt2Exception:AAPT2エラー:ログで詳細を確認してください

これを回避するには、次の行をgradle.propertiesに追加します。

Android.enableAapt2 = false

これは以前に元のプロジェクトで実行した手順です(このエラーにも遭遇しました)。残念ながら、それは私の質問からのエラーを与えます。ですから、aapt2でこの問題を解決する方法の問題です。こちらもご覧ください: AAPT2エラー:対処方法androidTestが機能しない後、詳細をログで確認してください

何か案が?

14
K.Os

私も同じ問題を抱えていました。個々のテストまたはテストクラスを実行しようとするたびに、「空のテストスイート」エラーが表示され続けました。これはAndroid Studioのバグのようです。

代わりに、androidTestパッケージを右クリックして、['Tests in ...]をクリックします。これが私がそれを機能させることができる唯一の方法です。

礼儀: The codelab guys

[〜#〜] update [〜#〜]

これはAndroid Studio 3.1バージョンで修正されています。 gradlew connectedDebugAndroidTestissue も修正されました。

13
Henry

私は同じ問題を抱えていました。私の場合、問題を解決したのは、テストクラス(DaoTestクラス)を、Android Studio。

前にこのプロジェクト構造がありました:

  • src
    • androidTest
      • Java
        • [私のアプリパッケージ]
          • ExampleInstrumentedTest
          • itemList.dataSource
            • DaoTest

そして次のように変更されました:

  • src
    • androidTest
      • Java
        • [私のアプリパッケージ]
          • ExampleInstrumentedTest
          • DaoTest

これを実行した後、クラス内のすべてのテストを問題なく一度に実行できました。

0
Thiago Saraiva