2017-12-25 25 views
7

私はandroidTestの実行に問題があります。ここで クラスが見つかりません、アンドロイドスタジオ3.0.1、部屋、Kotlinを使用して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() 
} 


} 

Process finished with exit code 1 Class not found: "com.blabla.shoppinglistapp.ShoppingListDaoTest"Empty test suite.

開始していません。

更新

私は本当に悪いことに気付きました。

Error:Gradle: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

このためworkroundがgradle.propertiesに次の行を追加することです:

android.enableAapt2=false

この私は、Android Studioで新しいプロジェクトを開始し、デフォルトを実行しようと、それは私に知られてエラーになりますandroidTest 以前の私のプロジェクトでやったことです(私もそのエラーに遭遇しました)。 残念ながら、それは私の質問から私にエラーを与える後。 これはaapt2を使ってisseを解決する方法の問題です。 こちらをご覧ください:AAPT2 error: check logs for details, after workround the androidTest not working

答えて

6

私も同じ問題を抱えていました。個々のテストやテストクラスを実行しようとするたびに、「Empty Test Suite」エラーが発生していました。これはAndroid Studioのバグだと思われます。

代わりに、androidTestパッケージを右クリックし、[Run 'Tests in ...]をクリックします。これが私に働く唯一の方法です。

提供:The codelab guys

+0

これは(答えてくれてありがとう)種類の、これが機能することをばかげている...あなたは、テストの上で右クリックをすることはできませんし、それを実行しますが、右の親フォルダをクリックすると、それを実行する....私はアンドロイドに新しいですが、テストはとても壊れているようだ.... – jacoballenwood

+0

@ジャコバレンウッドそれはコットンで壊れている。あなたがJavaでテストを書くのであれば、それは完全に動作します。しかし、今書いているように、このツールはKotlinを完全にサポートしていません。彼らはすぐにそれを修正することを望む。 – Henry

関連する問題