Xcode Unit परीक्षणों में @testable का उपयोग करते समय "ऐसा कोई मॉड्यूल नहीं"


168

मैंने हाल ही में Xcode 7 बीटा 5 में अपडेट किया। मैंने पहले वाले प्रोजेक्ट में एक यूनिट टेस्ट जोड़ने की कोशिश की, लेकिन मुझे @testable import myModuleNameलाइन पर "कोई ऐसा मॉड्यूल [myModuleName]" त्रुटि संदेश नहीं मिल रहा है ।

यहां छवि विवरण दर्ज करें

मैंने कोशिश की

  • Optionक्लीन बिल्ड फोल्डर के साथ प्रोजेक्ट की सफाई
  • जाँच करें कि "सक्षमता सक्षम करें" (डीबग) बिल्ड विकल्पों में हां के लिए सेट किया गया था
  • परीक्षण लक्ष्य को हटाना और फिर iOS यूनिट परीक्षण बंडल को फिर से जोड़ना

इसमें से किसी ने भी इस परियोजना के लिए काम नहीं किया (लेकिन मुझे किसी अन्य परियोजना में काम करने के लिए परीक्षण मिला है)। क्या किसी और को यह समस्या थी और इसे हल किया?



यदि आप xcodebuild के साथ कमांड लाइन से निर्माण कर रहे हैं, तो अपने बिल्ड कमांड के लिए -वर्कस्पेस फ़्लैग जोड़ना सुनिश्चित करें। मैंने अपने ट्रैविस बिल्ड पर इस तरह से इस मुद्दे को हल किया।
विक्टर 'क्रिस' कैब्रल

जवाबों:


210

कृपया अपना मॉड्यूल नाम जांचें जिसे आप आयात करने का प्रयास करते हैं @testable import "ModuleName"। मॉड्यूल का नाम समान होना चाहिएTarget->Build Settings-> Product Module Name


5
अधिकांश मामले में, यह उत्पाद मॉड्यूल नाम के बारे में है। चेक करें spaceऔर_
onmyway133

5
-और सावधान रहना _। मेरी एक परियोजना -के नाम में माइनस है, लेकिन मॉड्यूल के _बजाय अंडरस्कोर है
बेरिलियम

4
मैंने ""विचार का उपयोग किया , और मिलाExpected identifier in import declaration
१२

1
@ onmyway133 सुपर क्लोज था। मेरे मामले में, मेरे प्रोजेक्ट नाम से एक अलग उत्पाद मॉड्यूल नाम था। अपने मॉड्यूल का नाम खोजने के लिए Build Settingsअपनी परियोजना (परीक्षण या यूआई परीक्षण नहीं) का चयन करने के लिए जाएं, फिर PRODUCT_MODULE_NAMEजो कुछ भी पता चलता है उसके लिए खोज करें कि उसके बाद क्या होना चाहिए@testable import
jonmecer

115

जवाब जो मेरे लिए काम किया

इसका उत्तर यह था कि मेरी परियोजना में कुछ त्रुटियां थीं जो बिल्ड को विफल कर रही थीं। (यह कोड में हर दिन आपके मानक बस था।) के बाद मैंने त्रुटियों को ठीक किया और एक और साफ और निर्माण किया, यह काम किया।

ध्यान दें कि इन त्रुटियों को पहले नहीं दिखाया गया था। उन्हें दिखाने के लिए पाने के लिए:

  • अपनी संपूर्ण परीक्षण फ़ाइल को टिप्पणी करें जो आपको "ऐसा कोई मॉड्यूल नहीं" त्रुटि दे रही है।
  • अपने प्रोजेक्ट को फिर से चलाने का प्रयास करें।

यदि अन्य त्रुटियां हैं, तो उन्हें अब दिखाना चाहिए। उन्हें ठीक करें और फिर अपने टेस्ट फ़ाइल कोड को अनइंस्टॉल करें। मेरे लिए "ऐसा कोई मॉड्यूल नहीं" त्रुटि चली गई थी।


यदि यह अन्य लोगों के लिए समस्या का समाधान नहीं करता है, तो आप निम्नलिखित को भी आज़मा सकते हैं:

बिल्ड फ़ोल्डर को साफ़ करें

उत्पाद मेनू खोलें, दबाए रखें Option, और "क्लीन बिल्ड फ़ोल्डर ..." पर क्लिक करें।

यहां छवि विवरण दर्ज करें

सुनिश्चित करें कि सक्षमता परीक्षण हाँ पर सेट है

प्रोजेक्ट नेविगेटर में अपने प्रोजेक्ट का नाम क्लिक करें। बिल्ड सेटिंग्स का चयन करें और बिल्ड विकल्प पर स्क्रॉल करें। सुनिश्चित करें कि सक्षमता परीक्षण सक्षम है हां (डीबग के लिए)।

यहां छवि विवरण दर्ज करें

अपने परीक्षण लक्ष्य को हटाएं और पुनः जोड़ें

यदि आपने अन्य चीजें की हैं तो मेरा अनुमान है कि आपको ऐसा करने की आवश्यकता नहीं है। लेकिन अगर आप ऐसा करते हैं, तो याद रखें कि आपने पहले से ही लिखी किसी भी यूनिट टेस्ट को बचा लिया है।

प्रोजेक्ट नेविगेटर में अपने प्रोजेक्ट का नाम क्लिक करें। फिर अपने टेस्ट लक्ष्य का चयन करें। इसे हटाने के लिए नीचे स्थित माइनस (-) बटन पर क्लिक करें।

यहां छवि विवरण दर्ज करें

फिर प्लस (+) बटन पर क्लिक करें और इसे फिर से जोड़ने के लिए iOS यूनिट टेस्टिंग बंडल चुनें। जैसा कि आप देख सकते हैं, आप उसी तरह एक यूआई परीक्षण बंडल भी जोड़ सकते हैं।

कुछ अन्य विचार

  • सुनिश्चित करें कि सभी आवश्यक कक्षाएं आपके परीक्षण लक्ष्य के सदस्य हैं।
  • सुनिश्चित करें कि आपने सभी आवश्यक पुस्तकालयों को जोड़ दिया है।
  • सुनिश्चित करें कि मॉड्यूल नाम सही तरीके से लिखा गया है ( इस उत्तर को देखें )।

या ...

नीचे एक टिप्पणी या उत्तर छोड़ें यदि आपको कुछ और मिला जो काम किया।

सम्बंधित


2
यहाँ सभी समान समस्याओं के साथ, Xcode 7 बीटा 5 के साथ। दुर्भाग्य से ऊपर दिए गए कदम इसे हल करने के लिए प्रतीत नहीं होते हैं - मॉड्यूल अभी भी इस तरह से संबंधित है, "ऐसा कोई मॉड्यूल 'यूटिलिटी' नहीं है।" आपके स्क्रीनशॉट से एकमात्र अंतर यह है कि मैं इस UI परीक्षण फ़ोल्डर (मेरे मामले में GlimpulseUITests) के साथ काम करने की कोशिश कर रहा हूं। क्या UI टेस्ट के साथ @testable काम नहीं करता है?
Zac

5
*** महत्वपूर्ण *** यदि आप अपने परीक्षण लक्ष्य को हटाते हैं और फिर से जोड़ते हैं, तो यह आपके मौजूदा परीक्षणों को अधिलेखित करने के लिए एक खाली परीक्षण टेम्पलेट को फिर से बनाएगा। ऐसा करने से पहले अपने परीक्षण स्रोतों को सहेजना सुनिश्चित करें।
पौल

2
मेरे लिए यहां तक ​​कि टाइप करते समय मेरी अलग-अलग कक्षाएं भी नहीं दिखाई जा रही थीं ... मैंने आखिरकार प्रोडक्ट> क्लीन, एक्सकोड को फिर से शुरू किया। जब इसे फिर से शुरू किया गया, तो इसे अनुक्रमण को पूरा करने के लिए कुछ सेकंड का समय दिया गया और तब वॉयला ने मेरे सभी संदर्भों को दिखाया कि प्रत्येक वर्ग को परीक्षण लक्ष्य के सदस्य के रूप में शामिल किए बिना।
राजिव जैन

1
यदि आपने यह कोशिश नहीं की है, तो बाईं ओर अपने लापता ढांचे पर क्लिक करें, फिर दाईं ओर "लक्ष्य सदस्यता" चुनें और इसे अपने इकाई परीक्षण लक्ष्य में शामिल करें।
एल्बोगडानो

3
अपने मुख्य लक्ष्य -> ​​"उत्पाद मॉड्यूल नाम" की सेटिंग बनाने के लिए जाएं और देखें कि क्या यह उस मॉड्यूल नाम से मेल खाता है जिसे आप अपने परीक्षण में आयात करने का प्रयास करते हैं।
f0rz

64

मेरे लिए समस्या यह थी कि परीक्षण का आईओएस तैनाती लक्ष्य मुख्य लक्ष्य के समान नहीं था। इसलिए इसे अवश्य देखें।

अपने परीक्षण लक्ष्य में:

Build Settings -> iOS Deployment Target -> iOS<same as the target you are testing>

ऐसा करने के बाद, मुझे टेस्ट बंडल पर सेट Enable Bitcodeहोना पड़ा No
पाब्लियोस

2
Lol यह काम करता है लेकिन कैसे xcode से बेवकूफ है कि यह एक अलग त्रुटि नहीं फेंकता है
जे डो

31

तो यह है कि मैं पूर्व सुझावों से सभी सुझाए गए समाधानों की कोशिश करने के बाद अपना कोड काम करने के बारे में कैसे गया।

  • मैंने प्रोजेक्ट की बिल्ड सेटिंग्स में 'YES' के लिए 'सक्षम करें सक्षमता' सेट की है
  • मैंने अपने प्रोजेक्ट की बिल्ड सेटिंग्स में 'YES' के लिए 'परिभाषित मॉड्यूल' भी निर्धारित किया है।
  • नियमित .swift फ़ाइल (रों) मेरी परियोजना के भीतर के लिए, मान MyApp , मैं के लिए लिखने परीक्षण मामलों जा रहा था, मेरे पास है दोनों मुख्य " MyApp " और " MyAppUnitTests " लक्ष्य के तहत जाँच लक्ष्य सदस्यता
  • मैंने तब अपनी इकाई परीक्षण फ़ाइल (एस) को चुना, ' आयात XCTest ' के नीचे '@ सबसे बेहतर आयात MyApp ' घोषित किया , और केवल लक्ष्य सदस्यता के तहत "MyAppUnitTests" की जाँच की

और सब कुछ आकर्षण की तरह काम करता था। उम्मीद है की यह मदद करेगा।


8
परीक्षण क्षमता को सक्षम करें और मॉड्यूल को परिभाषित करता है कि चाल क्या थी। मुझे नियमित * .swift फ़ाइलों के लिए लक्ष्य सदस्यता बदलने की आवश्यकता नहीं थी।
जॉर्ज याकूब

मैंने उपरोक्त सभी चरण किए थे, लेकिन अभी भी मेरे पास ऐसी कोई मॉड्यूल त्रुटि नहीं है। मेरी परियोजना एक तेज़- obj c मिक्स है, हालांकि
मिकेल

@ मिकेल, क्या आप अपने ओबजैक / स्विफ्ट मिश्रण कोड आधार में केवल स्विफ्ट फ़ाइलों के लिए परीक्षण लिख रहे हैं? (मैं पूछता हूं क्योंकि, पिछली बार जब मैंने जाँच की थी, तो मुझे लगता है कि '@testable import' ने केवल ओबज-सी / स्विफ्ट कोडबेस मिश्रण में केवल स्विफ्ट फ़ाइलों के लिए परीक्षण मामलों को लिखने के लिए काम किया। यह शायद अब तक बदल गया है। अगर मैं यहां गलत हूं)।
विक स्विफ्ट

6
मुझे मेरी समस्या का पता चला। ऐसा इसलिए था क्योंकि मेरे टेस्ट टारगेट का वैलिड आर्किटेक्चर मेरे मुख्य टारगेट के वैलिड आर्किटेक्चर कॉन्फ़िगरेशन जैसा नहीं था। अब यह काम कर रहा है। Btw, मैं अपने मामले में केवल स्विफ्ट कक्षाओं का परीक्षण कर रहा हूं, मैंने इसे Obj-c के लिए एक कोशिश नहीं दिया
Mikael

3
आपको अपने परीक्षण लक्ष्य में एप्लिकेशन स्विफ्ट फ़ाइलों को नहीं जोड़ना चाहिए, यह परीक्षण चलाते समय उनकी सामग्री को डुप्लिकेट बना देगा।
प्रेज़ेमीस्लाव रेसीसिएस्की

18

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

जैसे। @testable import Ocean-Swiftहो जाता है@testable import Ocean_Swift

यदि आप @testableसिंटैक्स का उपयोग करते हैं तो बस एक और बात, अपने उत्पादन लक्ष्य को अपने परीक्षण लक्ष्य में शामिल नहीं करना सुनिश्चित करें। मैंने पाया है कि यह अकथनीय विचित्रता का कारण होगा।


1
सभी गैर-अल्फ़ान्यूमेरिक वर्णों को अंडरस्कोर के साथ बदलने की आवश्यकता हो सकती है। मेरा लक्ष्य इस प्रारूप में था App (Dev), परीक्षण योग्य मॉड्यूल बन गयाApp__Dev_
मशरूम

11

यह दोनों लक्ष्यों की निर्माण सेटिंग्स के साथ एक त्रुटि लगता है। आपको यह सुनिश्चित करने की आवश्यकता है कि:

  • ENABLE_TESTABILITY दोनों लक्ष्यों के लिए हाँ के बराबर है।
  • PRODUCT_MODULE_NAMEपरीक्षण लक्ष्य का मूल्य आवेदन के एक से भिन्न होना चाहिए।

2
इसने मेरे लिए काम किया। मैं गलत मॉड्यूल नाम का उपयोग कर रहा था। मैं एक _ जोड़ने के बजाय स्थान को हटा रहा था। डबल सेटिंग में अपने उत्पाद का नाम
बदलें

9

जाँच करने के लिए एक और बात: यदि आपके पास एक उद्देश्य-सी परियोजना है, लेकिन स्विफ्ट में इकाई परीक्षण लिख रहे हैं, तो सुनिश्चित करें कि मुख्य लक्ष्य कम से कम एक स्विफ्ट फ़ाइल का उपयोग करता है!


और जानकारी:

मैं एक उद्देश्य-सी परियोजना पर काम कर रहा था, लेकिन स्विफ्ट में इकाई परीक्षण लिखना चाहता था।

मैंने आवश्यक ProjectName-Bridging-Header.h फ़ाइल बनाने के लिए मुख्य लक्ष्य के लिए एक स्विफ़्ट फ़ाइल जोड़ी, मेरे परीक्षण लिखे और सब कुछ ठीक से काम कर रहा था।

बाद में मैंने स्विफ्ट फ़ाइल को हटा दिया क्योंकि मुझे लगा कि मुझे इसकी आवश्यकता नहीं है (सभी मुख्य लक्ष्य कोड ऑब्जेक्टिव-सी में है ... मैं केवल स्विफ्ट में परीक्षण लिख रहा था)।

जब तक मैंने "क्लीन / क्लीन बिल्ड फोल्डर" किया और "No No Module" समस्या दिखाई दी, तब तक मुझे किसी समस्या पर ध्यान नहीं दिया गया। कुछ सिर खुरचने के बाद मैंने एक नई रिक्त स्विफ्ट फ़ाइल जोड़ी और समस्या दूर हो गई।

मैंने स्विफ्ट फ़ाइल के साथ / उसके बिना कई बार इसका परीक्षण किया है, और यह केवल इसके साथ काम करता है ... इसलिए, मुझे या तो प्रोजेक्ट में रिक्त फ़ाइल को छोड़ने की आवश्यकता होगी, कुछ ऑब्जेक्टिव-सी को स्विफ्ट में बदलें, या कुछ जोड़ें स्विफ्ट में लिखे प्रोजेक्ट का नया कोड।


1
!! 3 घंटे के बाद सूखे हुए डेटा को हटाकर, सफाई, 3 बार स्क्रैच से शुरू करके, मुझे आपकी टिप्पणी मिली जिसने मेरी समस्या हल कर दी !!! धन्यवाद !!!!
मैरीम फेकरी

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

एक अतिरिक्त बिंदु मैं जोड़ना चाहूंगा, हालांकि मेरी ज्यादातर ओबजेक परियोजना में कम से कम एक स्विफ्ट फ़ाइल है, मेरे लक्ष्य के लिए कोई ब्रिजिंग हेडर नहीं था। निम्नलिखित लिंक पर दिए गए निर्देशों के बाद "एक अनुप्रयोग लक्ष्य के भीतर आयात कोड" शीर्षक के तहत स्विफ्ट परीक्षणों से ओबीजेसी कक्षाओं का उपयोग करने में सक्षम होने का समाधान किया गया। developer.apple.com/documentation/swift/…
palmi

मैं इस मुद्दे में भाग गया। हालाँकि, यदि संभव हो तो स्विफ्ट फ़ाइल को शामिल करने से बचने का एक तरीका ढूंढने में मेरी दिलचस्पी है, इसलिए मैंने यहाँ सवाल पूछा: stackoverflow.com/q/62965954/211292
थॉमस

दरअसल, ऐसा लगता है कि यदि आप @testable import Fooलाइन को शामिल नहीं करते हैं , तो आपके यूनिट परीक्षणों को सही ढंग से चलना चाहिए।
थॉमस डब्ल्यूडब्ल्यू

9

उन लोगों के लिए जिन्होंने अंतिम उत्तर तक स्क्रॉल किया है और अभी भी कुछ भी काम नहीं किया है, यहां अन्य सभी उत्तर सलाह के बाद मेरे लिए ऐसा किया गया है। मैं Xcode 11 का उपयोग कर रहा हूं:

मेरे मामले में समस्या का कारण यह था कि मैंने अपना उत्पाद नाम बदल दिया

  1. मैंने अपने मुख्य लक्ष्य की बिल्ड सेटिंग्स में अपना उत्पाद नाम बदलकर "न्यू नेम" कर दिया।
  2. मुझे अपने परीक्षण लक्ष्य के लिए होस्ट एप्लिकेशन का फिर से चयन करना था
  3. मुझे नहीं पता था कि उत्पाद का नाम बदलने से उत्पाद मॉड्यूल का नाम भी बदल जाएगा , यह मेरी परीक्षण फ़ाइलों में मॉड्यूल आयात के लिए उपयोग किया जाता है। मैंने अपना आयात इस प्रकार बदला:

    @ नवीनतम आयात New_Name

  4. इसने काम कर दिया

मुझे उम्मीद है यह मदद करेगा


7

इस मुद्दे पर कुछ दिन बिताने के बाद आखिरकार मैं इसे अपने प्रोजेक्ट के साथ काम करना चाहता हूं। समस्या ब्रिजिंग हेडर में थी - यदि आप अपने मुख्य लक्ष्य में ब्रिजिंग हेडर का उपयोग कर रहे हैं तो टेस्ट लक्ष्य में रास्ता खाली नहीं हो सकताब्रिजिंग हेडर खाली नहीं हो सकता !!!

आशा है कि यह किसी के लिए कुछ समय बचाएगा।


5

परीक्षण योजना की निर्माण सेटिंग के तहत सुनिश्चित करें, परीक्षण लक्ष्य सूची में है।

प्ले बटन के अलावा, परीक्षण योजना का चयन करें, फिर योजना संपादित करें ..., बिल्ड अनुभाग पर जाएं, प्लस + ​​पर क्लिक करें और उस लक्ष्य का चयन करें जिसके खिलाफ आप परीक्षण करना चाहते हैं।

मेरे मामले में, हमारे पास एक आंतरिक लक्ष्य है जिसे हम (कुछ मामूली अंतरों) के साथ विकसित करते हैं और एक मर्ज के बाद, इसे परीक्षण कॉन्फ़िगरेशन से हटा दिया गया था।

परीक्षण योजना संपादित करें


5

यहां यह जांचना अभी बाकी है कि सूचीबद्ध नहीं है। मेरे लिए, इसका मेरी टीम के साथ कुछ करना था, शायद इसलिए कि हमारी टीम के एजेंट अभी तक नवीनतम लाइसेंस समझौते के लिए सहमत नहीं थे! एक बार जब मैंने अपने लक्ष्य की सामान्य सेटिंग्स में एक अलग टीम का चयन किया, और फिर मैंने 12.1 या 11.0 जैसे एक विशिष्ट परिनियोजन लक्ष्य को निर्दिष्ट किया, तो अचानक "ऐसा कोई मॉड्यूल नहीं" चेतावनी चली गई।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


4

मेरे मामले में, मेरे पास 3 मुद्दे थे। पहला यह था कि मुझे आयात पथ निर्दिष्ट करना था:

Target -> Build Settings -> Swift Compiler - Search Paths -> Import Paths

दूसरा यह था कि मैं पॉड्स का उपयोग कर रहा था और मुझे इन पॉड्स को अपने परीक्षणों के साथ आयात करना था:

target 'MyAppTests' do
    inherit! :complete
end

तीसरा यह कि मैं अपने लक्ष्य में एक ब्रिजिंग हेडर का उपयोग कर रहा था, इस प्रकार मुझे ब्रिजिंग हेडर को परीक्षण के लिए समान होना था।


2

मेरा मुद्दा यह था कि मैं जिस कक्षा का परीक्षण करना चाहता था वह एक अलग मॉड्यूल (एपीआई क्लाइंट) में होना चाहिए था, लेकिन वर्ग वास्तव में ऐप लक्ष्य का सदस्य था न कि फ्रेमवर्क लक्ष्य। कक्षा की लक्ष्य सदस्यता को बदलने से आयात त्रुटि दूर हो गई!


2

पर्यावरण: Xcode संस्करण 9.0 (9A235)
परिदृश्य: एक ओपन-सोर्स फ्रेमवर्क का परीक्षण।

मुझे एक ही समस्या थी: 'ऐसा कोई मॉड्यूल नहीं'।

उपाय:

  1. परीक्षण लक्ष्य का चयन करें।
  2. बिल्ड चरणों का चयन करें
  3. लिंक बाइनरी के माध्यम से जांच की जाने वाली रूपरेखा जोड़ें ...

यहां छवि विवरण दर्ज करें

यहाँ परीक्षण फ़ाइल है: यहां छवि विवरण दर्ज करें


2

मेरा भी यही मुद्दा था। बिल्ड फ़ोल्डर की सफाई और Xcode को पुनरारंभ करने से काम नहीं चला।

मेरे लिए जो काम किया गया वह यह सुनिश्चित कर रहा था कि आपके परीक्षण लक्ष्य और योजना के "बिल्ड एक्टिव आर्किटेक्चर ओनली" की सेटिंग आपके ऐप के लक्ष्य और योजना की सेटिंग से मेल खाती है।


2

मैंने उपरोक्त चरणों का पालन किया, जिसने काम किया। हालाँकि, मेरी परियोजना में कुछ और मुद्दे थे। मुझे यह चेतावनी मिली और मैं अपने परीक्षण लक्ष्य में परीक्षण करने के लिए अपने मुख्य प्रोजेक्ट से कक्षाओं का उपयोग नहीं कर सका।

मॉड्यूल का परीक्षण हिस्सा - आयात की अनदेखी

मैंने पाया कि आपका टेस्ट टारगेट प्रोडक्ट मॉड्यूल नाम (YourTestTarget -> Build Settings -> search for product module) आपके प्रोजेक्ट के नाम के समान नहीं हो सकता है।

परीक्षण लक्ष्य के लिए उत्पाद मॉड्यूल नाम आपके प्रोजेक्ट नाम के समान नाम नहीं हो सकता है

एक बार जब मैंने अपने परीक्षण लक्ष्य के लिए उत्पाद मॉड्यूल नाम बदल दिया तो सब कुछ काम कर गया।

यहां छवि विवरण दर्ज करें


1

मैंने यहां सभी उत्तरों की कोशिश की लेकिन लाल झंडा नहीं चलेगा। लेकिन मुझे इसकी परवाह किए बिना एक खाली परीक्षा "रनिंग" करके काम करना पड़ा और यह साफ हो गया।

जिन चीजों को मैं करना चाहता हूं, वे सुनिश्चित करें:

  • होस्ट अनुप्रयोग
  • @ आयात करने योग्य आयात "मॉड्यूल_नाम" (सुनिश्चित करें कि मॉड्यूल नाम सही है)
  • सुनिश्चित करें कि आप परीक्षण के लिए परिनियोजन लक्ष्य परियोजना के समान है
  • XCTest को लक्ष्य सदस्यता की आवश्यकता नहीं है

0

मेरे लिए समाधान का निर्माण करने के लिए था @ आयात करने योग्य myproject_ios का नाम बदलकर @testable import myproject करने के बाद मैंने अपडेट किया गया उत्पाद का नाम बिल्ड सेटिंग्स / पैकेजिंग / उत्पाद नाम में लक्ष्य myproject-ios का अद्यतन किया गया था / $ {TARGEN_NAME} से myproject तक।


0

यह मेरे लिए तय किया गया था जब मैंने तैनाती लक्ष्य को 9.3 से 11.0 तक बदल दिया था ।

सामान्य> तैनाती लक्ष्य> "11.0"


यह सिमुलेटर बदलने का मामला अधिक हो सकता है लेकिन यह मेरे लिए भी काम किया गया था
रोलांडसआर

0

मेरा समाधान यहाँ है।

सबसे पहले OdeAlSwiftUITest.swift क्लिक करें, फिर लक्ष्य सदस्यता में प्रोजेक्ट लक्ष्यनाम की जाँच करें।

यहां छवि विवरण दर्ज करें


8
ये गलत है। कभी भी अपनी परीक्षा की फाइलों को अपने लक्ष्य में शामिल न करें।
स्माइलबोट

0

यदि आप xcodebuild का उपयोग कर रहे हैं और इस समस्या को देखते हैं, तो बिल्ड कमांड में कार्यक्षेत्र ध्वज में जोड़ने पर विचार करें।

इसे बदल दिया

$ xcodebuild -scheme PowToonsTests -destination 'name=iPhone X' test

इसके लिए

$ xcodebuild -workspace PowToons.xcworkspace -scheme PowToonsTests -destination 'name=iPhone X' test

0

सेटिंग परीक्षण लक्ष्य बनाने में, होस्ट परीक्षण की जाँच करें, यह PRODUCT_NAME में सेट नाम लेता है। यह वह नाम है जिसे आपको परीक्षण कक्षाओं में उपयोग करना चाहिए।

मैं PRODUCT_NAME नहीं बदलने की सलाह देता हूं (मुख्य लक्ष्य का मिलान नाम)


0

यहां छवि विवरण दर्ज करें

प्रोजेक्ट नेविगेटर में MyAppTests.swift पर क्लिक करें, और दाएं पैनल पर क्लिक करें, अपने मॉड्यूल को लक्ष्य सदस्यता में जांचें। यह मेरा काम करता है।


आपको अपने एप्लिकेशन लक्ष्य में परीक्षण कक्षाएं नहीं जोड़ना चाहिए।
एलेक्स मोटर


-1

जैसा कि इस उत्तर में वर्णित है, मैं केवल एक परियोजना के लिए स्विफ्ट परीक्षण जोड़ रहा था। समाधान एक डमी स्विफ्ट क्लास को जोड़ना था, जिसके बाद Xcode एक ब्रिजिंग हेडर जोड़ने के लिए संकेत देगा, फिर स्विफ्ट क्लास को हटा देगा। उसके बाद सब ठीक था।


-1

मैं सूचीबद्ध अन्य चीजों के अलावा, मुझे उस इकाई के साथ फाइल जोड़ना था जिसे मैं इकाई परीक्षण मॉड्यूल के लिए अपने संकलन स्रोतों पर परीक्षण करने की कोशिश कर रहा थायहां छवि विवरण दर्ज करें


-1

मुझे लगता है कि ऐसा हो सकता है क्योंकि मैंने उदाहरण परीक्षणों को हटा दिया है।

मैंने यूनिट टेस्ट बंडल को हटा दिया, फिर इसे फिर से जोड़ा जैसा कि नीचे दी गई तस्वीरों में दिखाया गया है और फिर से सब ठीक हो गया है।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.