2017-08-22 22 views
10

मैं एक साधारण Kotlin श्रेणियां होती हैं,एंड्रॉयड स्टूडियो 3.0 Gradle 3.0.0-beta2, Kotlin यूनिट टेस्ट कवरेज टूट जाता है?

class MyClass { 
    fun justSayHello(yes: Boolean): String { 
     if (yes) { 
      return "Hello" 
     } else { 
      return "Sorry" 
     } 
    } 
} 

मैं है अपने परीक्षण नीचे के रूप में (यहाँ जावा में लिखा, Kotlin में हो सकता है भी,)

public class MyClassTest { 
    private MyClass myClass = new MyClass(); 

    @Test 
    public void testFirst() { 
     myClass.justSayHello(true); 
    } 

    @Test 
    public void testSecond() { 
     myClass.justSayHello(false); 
    } 
} 

जब मैं में कवरेज के साथ एक परीक्षण चलाने classpath 'com.android.tools.build:gradle:3.0.0-beta2' का उपयोग कर एंड्रॉइड स्टूडियो 3.0 बीटा -2, इसके लिए कोई कवरेज नहीं है।

लेकिन जब मैं classpath 'com.android.tools.build:gradle:2.3.3' का उपयोग कर परीक्षण चलाने के लिए, 100% कवरेज की सूचना दी।

जब मैं जावा के लिए अपने स्रोत कोड को बदलने:

public class MyClass { 
    public String justSayHello(boolean yes) { 
     if (yes) { 
      return "Hello"; 
     } else { 
      return "Sorry"; 
     } 
    } 
} 

यह दोनों Gradle निर्माण उपकरण

के लिए ठीक काम करता है मुझे ऐसा लगता है 'com.android.tools.build:gradle:3.0.0-beta2' Kotlin के लिए टूटी परीक्षण कवरेज माप है।

क्या मुझे कुछ याद आया? Kotlin में परीक्षण कवरेज पाने के लिए मेरे लिए कोई कामकाज है?

+3

मैं है सूचना https://issuetracker.google.com/issues/64929213 – Elye

उत्तर

3

मामले में किसी को अब भी एक समाधान की तलाश में है, एक Gradle कार्य में जोड़ने निर्देशिका है कि कवरेज उत्पादन में लग रहा है एक समाधान के रूप में इस मुद्दे के साथ मदद करता है में tmp निर्देशिका से मामलों कॉपी करने के लिए।

उदाहरण के लिए अपने मॉड्यूल Gradle फ़ाइल

task copyTestClasses(type: Copy) { 
    from "build/tmp/kotlin-classes/debug" 
    into "build/intermediates/classes/debug" 
} 

और फिर करने के लिए copyTestClasses जोड़ने परीक्षण Example of setting up gradle task

चलाने से पहले Gradle कार्य चलाने के लिए अपने चूक की स्थापना यह निर्देशिका के दोनों को खोजने के लिए मदद कर सकते हैं अपनी परियोजना में उन्हें मैन्युअल रूप से करने के लिए बात करने के लिए Gradle का उपयोग कर, यह सुनिश्चित करें कि आप सही जगह की ओर इशारा करते हैं, उनकी प्रयास करने से पहले (जायके निर्देशिका है कि आप बात करने के लिए की जरूरत में बदल जाएगा)

+0

यह वह जगह है के अनुसार https://stackoverflow.com/a/45354933/3286489 में रिपोर्ट में मुकदमा। लेकिन अगर सावधानी से निरीक्षण करें, तो यह परीक्षण कोड के कवरेज की रिपोर्ट कर रहा है, न कि ऐप कोड। :( – Elye

+0

कारण यह है कि एक परीक्षण कक्षाओं की कवरेज रिपोर्ट कर रहा है है, क्योंकि यह से/debugUnitTest को कॉपी है और न/डिबग –

+0

कोई डिबग फ़ोल्डर है अगर वहाँ एंड्रॉयड स्टूडियो 3.0.1 के साथ एक ही है कोई kotlin कक्षाएं – WenChao

संबंधित मुद्दे