2015-11-18 7 views
6

Mam następującą strukturę:nie można uzyskać dostępu do komponentów wewnętrznych ze źródła testu z Androidem

build.gradle 
src 
- main 
    - AndroidManifest.xml 
    - kotlin 
    - pkg 
     - MyClass.kt (internal class MyClass) 
- test 
    - kotlin 
    - pkg 
     - MyClassTest.kt 

W MyClassTest.kt ja odwołać internal class MyClass.


build.gradle:

apply plugin: 'com.android.application' 
apply plugin: 'kotlin-android' 
//apply plugin: 'java' 
//apply plugin: 'kotlin' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    sourceSets { 
    main.java.srcDirs += 'src/main/kotlin' 
    test.java.srcDirs += 'src/test/kotlin' 
    } 
} 

dependencies { 
    testCompile 'junit:junit:4.12' 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 

buildscript { 
    ext.kotlin_version = '1.0.0-beta-2423' 
    repositories { 
    mavenCentral() 
    } 
    dependencies { 
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
    } 
} 

repositories { 
    mavenCentral() 
} 

Teraz gdy uruchamiam ./gradlew test, pojawia się następujący błąd:

Cannot access 'MyClass': it is 'internal' in 'pkg'

Jednak po przełączeniu wtyczek do korzystania java zamiast com.android.application, i kotlin zamiast kotlin-android, testy zakończą się pomyślnie.

Jak mogę odwoływać się do klas wewnętrznych z moich źródeł testowych podczas korzystania z wtyczek Androida?

+2

To jest błąd w plugin Gradle dla Kotlin, poprawka jest prawie gotowa, zostanie dołączona do kolejnej aktualizacji Beta. –

+0

Ah, spoko. Czy jest na tym problem z YouTrack? – nhaarman

+0

https://youtrack.jetbrains.com/issue/KT-9441 –

Odpowiedz

1

Ten problem istniał jako błąd KT-9441 (jak zauważył @Andrey), i od tego czasu został naprawiony. Nie powinno być żadnego bieżącego problemu z najnowszym Kotlinem i jego wtyczkami Gradle.

+0

To nadal wydaje się być problemem dla projektów Androida? Korzystanie z wersji 1.0.1. – nhaarman

+0

To była poprawka zarówno w pluginach Intellij IDEA, jak i Kotlin, dlatego też wersja na system Android może być starszą wersją Intellij IDEA, która ma problem. –

+0

Mam również problem z dokładnie tym samym problemem w systemie Android (Android Studio), z wersją kotlin "1.0.1-2". Czy to możliwe, że zależy to od IDE? –