2017-12-25 43 views
7

androidTest를 실행하는 데 문제가 있습니다. 여기 클래스를 찾을 수 없습니다. Android Studio 3.0.1, Room, 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.

시작하지 않음

업데이트

나는 정말로 나쁜 점을 발견했습니다. 내가 안드로이드 Studio에서 새 프로젝트를 시작하고 기본을 실행하려고 androidTest이 나에게 알려진 오류를 제공 :

이에 대한 workround는 gradle.properties이 줄을 추가하는 것입니다

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

:

android.enableAapt2=false

이를 이전에 원래 프로젝트에서 수행 한 단계입니다 (오류가 발생했습니다). 불행히도, 후에 그것은 내 질문에서 오류를 제공합니다. 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

@ jacoballenwood 예, 그것은 kotlin에서 고장 났어요. Java로 테스트를 작성하면 완벽하게 작동합니다. 그러나 지금 쓰십시오. 툴링은 Kotlin을 완전히 지원하지 않습니다. 그들이 빨리 고쳐주기를 바란다. – Henry