7

वाद्ययंत्र परीक्षणों के लिए, मेरे पास TestApplication है जो TestComponent बनाता है, लेकिन फ़ाइल अब और उत्पन्न नहीं हुई है (Error:/xxx/TestApplication.java:16: The import.xxx.DaggerTestApplicationComponent cannot be resolved)। मैं मूल कारण की पहचान करने में सक्षम नहीं हूं। मैंने विभिन्न एंड्रॉइड स्टूडियो (2.2, 2.1.2), विभिन्न ग्रेडल प्लगइन (2.2.0-अल्फा 6, 5, 4) और डैगर के विभिन्न संस्करणों (2.2 से 2.6) की कोशिश की है।एनोटेशन प्रोसेसर + एंड्रॉइडटेस्ट + डैगर 2

क्या मुझे androidTestAnnotationProcessor का उपयोग करना चाहिए? (उस मामले से पहले नहीं था)

संपादित करें: कटार 2.6 उपयोग करने के लिए, जोड़ने के लिए classpath 'com.google.guava:guava:19.0'

अद्यतन की जरूरत है: वहाँ एक Module साथ एक समस्या थी, इसलिए Component नहीं बना जा सकता है। हालांकि, जैक (डीबग विकल्पों के साथ भी) का उपयोग करके, मुझे समस्या नहीं दिखाई दे रही थी। अभी के लिए, जावा 7 पर वापस जा रहा है, प्लगइन 2.1.2 ग्रेड। इस तरह, किसी भी अमरूद संस्करण को निर्दिष्ट करने की कोई आवश्यकता नहीं है, और सभी नवीनतम libs का उपयोग किया जा सकता है (डैगर 2.6, मक्खन 8.2.1, एपीटी 1.8)

+0

आप कमांड लाइन में यह जनरेट करने का प्रयास किया? वहां डैगर और टेस्ट फाइल पीढ़ी के साथ कोई समस्या थी, यह सुनिश्चित नहीं है कि यह अभी भी – njzk2

+0

है, लेकिन मुझे नहीं लगता है ... लेकिन मुझे संदेह है कि जैक – mbmc

उत्तर

9

मुझे डैगर 2.9 के साथ एक ही समस्या थी। compileDebugAndroidTestSources सफलतापूर्वक पूरा कर रहा था लेकिन Dagger*Component उत्पन्न नहीं हुआ था।

के बारे में एक घंटे मैं इस सवाल पर और अंत में कुछ प्रयोगों के साथ उतरा के लिए संघर्ष करने के बाद एक समाधान पाया:

androidTestAnnotationProcessor 'com.google.dagger:dagger-compiler:2.9'

जोड़ें और compileDebugAndroidTestSources फिर से निष्पादित करें। अब स्रोत उत्पन्न होना चाहिए (यदि आपका ग्राफ ठीक है तो आपको अपने Dagger*Component के सफल होने के संदर्भ में अस्थायी टिप्पणी करनी पड़ सकती है)।

यदि आपके ग्राफ के साथ एक समस्या है (उदाहरण के @Provides लापता) अब आप (जहां काम एक त्रुटि के बिना पूरा किया गया था लेकिन सूत्रों उत्पन्न नहीं कर रहे थे androidTestAnnotationProcessor बिना पहले वाली स्थिति की तुलना में) एक त्रुटि प्राप्त होगी

<rant>

मुझे डैगर से प्यार था, लेकिन अब हर समय इसके साथ कुछ अजीब समस्याएं हैं जो इसे लंबे वाणिज्यिक परियोजनाओं के लिए एक बड़ा जोखिम बनाती हैं। इसके अलावा उनके पास अभी भी सभ्य दस्तावेज़ीकरण नहीं है जो इसे नए डेवलपर्स द्वारा सीखना बहुत कठिन बनाता है। शायद यह सिर्फ डैगर की गलती नहीं है, शायद धीरे-धीरे और एंड्रॉइड स्टूडियो की समस्याओं में उनका हिस्सा है लेकिन मैं गंभीरता से इसे डंप करने पर विचार कर रहा हूं।

</rant>

+0

को सक्षम करने के बाद यह शुरू हो रहा है यदि यह कार्य निष्पादित करता है, तो यह काम नहीं करेगा। क्या कार्य कॉल संकलित करता है DebugAndroidTestSources? – Sunnyday

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