मैंने नीचे एक बहुत ही सरल परीक्षण कार्य बनाया है
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)
}
मैं इसे कवरेज के साथ चलाता हूं ... परीक्षण कवरेज संख्या 0% है। लेकिन अगर मैं इसे हटा देता हूं inline
कीवर्ड, परीक्षण कवरेज नंबर अब दिखाता है।
क्या यह एक कोटलिन मुद्दा या एंड्रॉइड इंटेलिजे आईडीईए कवरेज मुद्दा है? (नोट: जाकोको कवरेज अच्छा है)।
नोट: मैं एंड्रॉइड स्टूडियो 2.0 और कोटलिन 1.0.2 का उपयोग कर रहा हूं
उत्तर:
जवाब के लिए 3 № 1जब एक रेखांकित समारोह संकलित किया जाता है, तोसंकलक अनिवार्य रूप से अपने शरीर को कॉल साइट (फ़ंक्शन कॉल के स्थान पर) चिपकाता है। इसका मतलब यह है कि कवरेज विश्लेषण यह नहीं बता सकता कि यह एक रेखांकित फ़ंक्शन है क्योंकि यह वास्तव में अस्तित्व में नहीं है जहां आपने इसे परिभाषित किया है। दूसरे शब्दों में, यह व्यवहार एक कार्यप्रणाली के लिए इसका अर्थ है इसका एक प्राकृतिक आर्टिफैक्ट है।