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
아이디어가 있으십니까?
이 당신이 시험에하지 마우스 오른쪽 버튼으로 클릭 수 및 실행,하지만 당신은 바로 상위 폴더를 클릭 할 수 있습니다 ... 종류이 (답변에 대한 감사) 작동의 말도하고 그것을 실행 .... 나는 안드로이드에 새로운지만 테스트가 너무 망가져 보인다 .... – jacoballenwood
@ jacoballenwood 예, 그것은 kotlin에서 고장 났어요. Java로 테스트를 작성하면 완벽하게 작동합니다. 그러나 지금 쓰십시오. 툴링은 Kotlin을 완전히 지원하지 않습니다. 그들이 빨리 고쳐주기를 바란다. – Henry