2016-05-24 6 views
9

ben Kapsama Çalıştır-Kotlin inline anahtar kelime

class SimpleClassTest { 

    lateinit var simpleObject: SimpleClass 
    @Mock lateinit var injectedObject: InjectedClass 


    @Before 
    fun setUp() { 
     MockitoAnnotations.initMocks(this) 
    } 

    @Test 
    fun testSimpleFunction() { 
     simpleObject = lookupInstance() 
    } 

    inline fun lookupInstance() = SimpleClass(injectedObject) 
} 

aşağıdaki gibi çok basit bir test işlevi yarattı ... test kapsamı sayısı% 0'dır. Fakat inline anahtar sözcüğünü kaldırırsam, test kapsamı numarası şimdi gösterir.

Bu Kotlin sorunu ya da Android IntelliJ IDEA Coverage sorunu mi? (Not: JaCoco kapsama alanı iyidir).

Not: Ben Android Studio 2.0 ve KOTLIN 1.0.2 bir satır içi işlevi derlenmektedir

+0

Test çıktısında bir ArrayIndexOutOfBoundsException var mı? – daemontus

cevap

1

kullanıyorum, derleyici temelde (işlev çağrısı yerine) çağrısı siteye vücudunu yapıştırır. Bu, kapsama analizinin satır içi bir işlev olduğunu söyleyemediği anlamına gelir, çünkü onu tanımladığınız yerde gerçekten bulunmaz. Başka bir deyişle, bu davranış, bir fonksiyonun belirtilmesi için ne anlama geldiğinin doğal bir eseridir.

+0

Satır içi kullanıldığında, başkalarının kapsama alanının sıfır olarak sayılmasının bir nedeni yoktur. JaCoco tamam, bu yüzden yukarıda hiç açıklamıyor. – Elye

İlgili konular