2015-11-18 10 views
6

मैं निम्नलिखित संरचना मिल गया है के साथ परीक्षण स्रोत से आंतरिक घटकों का उपयोग नहीं कर सकता:एंड्रॉयड

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

MyClassTest.kt में मैं संदर्भ 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() 
} 

अब जब मैं ./gradlew test चलाने के लिए, मैं निम्नलिखित त्रुटि मिलती है:

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

हालांकि, जब मैं प्लगइन्स स्विच java बजाय com.android.application उपयोग करने के लिए, और kotlin-android के बजाय, परीक्षण सफल होते हैं।

एंड्रॉइड प्लगइन्स का उपयोग करते समय मैं अपने परीक्षण स्रोतों से आंतरिक कक्षाओं का संदर्भ कैसे दे सकता हूं?

+2

यह कोटलिन के लिए ग्रैडल प्लगइन में एक बग है, एक फिक्स लगभग तैयार है, अगले बीटा अपडेट के साथ शामिल किया जाएगा। –

+0

आह, ठंडा। क्या इसके लिए YouTrack पर कोई समस्या है? – nhaarman

+0

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

उत्तर

1

यह समस्या बग KT-9441 (जैसा कि @Andrey द्वारा नोट किया गया है) के रूप में अस्तित्व में था, और तब से तय कर दिया गया है। नवीनतम कोटलिन और इसके ग्रैडल प्लगइन्स के साथ कोई मौजूदा समस्या नहीं होनी चाहिए।

+0

के रूप में चिह्नित किया गया है यह अभी भी एंड्रॉइड प्रोजेक्ट्स के लिए एक मुद्दा है? संस्करण 1.0.1 का उपयोग करना। – nhaarman

+0

यह इंटेलिज आईडीईए और कोटलिन प्लगइन दोनों में एक साथ काम करने में एक फिक्स था, इसलिए एंड्रॉइड स्टूडियो बिल्ड इंटेलिज आईडीईए का पुराना संस्करण हो सकता है जिसमें समस्या है। –

+0

मैं एंड्रॉइड (एंड्रॉइड स्टूडियो) में कोटलिन संस्करण '1.0.1-2' के साथ भी एक ही मुद्दे के साथ संघर्ष कर रहा हूं। क्या यह संभव है कि यह आईडीई पर निर्भर करता है? –