@ টেস্টেবল ব্যবহার করার সময় 'মডিউল পরীক্ষার জন্য সংকলিত হয়নি'


146

আমি @testableআমার ক্লাসগুলি পরীক্ষার লক্ষ্যে প্রকাশ করতে সুইফট 2-র নতুন ঘোষণাটি ব্যবহার করার চেষ্টা করছি । তবে আমি এই সংকলক ত্রুটি পাচ্ছি:

এখানে চিত্র বর্ণনা লিখুন

Intervalsমডিউলটি এমন ক্লাসগুলি অন্তর্ভুক্ত করে যা আমি প্রকাশ করার চেষ্টা করছি। আমি কীভাবে এই ত্রুটি থেকে মুক্তি পাব?

উত্তর:


238

আপনার প্রধান টার্গেটে আপনাকে Enable Testabilityহ্যাঁ বিল্ড বিকল্পটি সেট করতে হবে ।

নীচে @ ইয়ারশ্যাভিয়ানদের মন্তব্য অনুসারে, এটি কেবল অ্যাপল রিলিজ নোট অনুসারে ডিবাগ বিল্ডগুলিতে ব্যবহার করা উচিত: "টেস্টিবিলিটি বিল্ড সেটিংসটি কেবলমাত্র আপনার ডিবাগ কনফিগারেশনেই ব্যবহার করা উচিত, কারণ এটি অপ্টিমাইজেশনকে নিষিদ্ধ করে যা অভ্যন্তরীণ প্রতীকগুলি রফতানি না করে নির্ভর করে" অ্যাপ্লিকেশন বা কাঠামো " https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Intrication.html#//apple_ref/doc/uid/TP40001051-CH1-SW326


হাই, আমি একই ত্রুটি পেয়েছি তবে পরীক্ষার যোগ্যতার বিকল্পটি দেখতে পাচ্ছি না এবং এক্সকোড using ব্যবহার করছি Any আমার কী করা উচিত কোনও ধারণা?
ব্যবহারকারী1601259

2
@ ব্যবহারকারী1601259 - আপনি শীর্ষ স্তরের প্রকল্পটি নির্বাচন করে সেটিংস তৈরি করতে গিয়ে এবং বিল্ড বিকল্পগুলির শিরোনামের নীচে অনুসন্ধান করে বিকল্পটি খুঁজে পেতে পারেন।
hgWittle

@ এইচজিভিটিটল - আমি যখন শীর্ষ স্তরের প্রকল্পটি নির্বাচন করি তখন বিল্ড অপশনগুলিতে আমি যা দেখি তা হ'ল "ডিবাগ ইনফরমেশন ফর্ম্যাট" এবং "বিল্ড প্রোডাক্টকে বৈধতা দিন।" আমি যখন বিল্ড অপশনগুলিতে লক্ষ্য নির্বাচন করি তখন আমি দেখতে পাই "এম্বেড থাকা সামগ্রীতে সুইফ্ট কোড রয়েছে।" এটাই. আমি যখন বিল্ড সেটিংসে অনুসন্ধান করি তখন এটি পাই না। এটি কি এক্সকোড 7 এর কারণে?
ব্যবহারকারী1601259

1
এটা সম্ভব যে আপনি আপনার "বিল্ড সেটিংস" তে "বেসিক" নির্বাচন করেছেন। আপনি যদি বাম পাশে "সমস্ত" নির্বাচন করেন তবে আপনি "টেস্টিবিলিটি সক্ষম করুন" দেখতে পাবেন
অ্যারে

1
মুক্তির বিল্ডগুলির জন্য এই কাজটি ঠিক কীভাবে করা উচিত, যেখানে পরীক্ষাগুলি চালিত হবে (তাই প্রয়োজন @testable) তবে অ্যাপ স্টোরে জমা দেওয়া দরকার? যদি Enable Testabilityকেবল ডিবাগ বিল্ডসের জন্য হয় তবে এর চারপাশের উপায় কী? আমাকে কি মুক্তির জন্য আমার পরীক্ষার কোডটি বের করতে হবে?
টিমগার্লসন

15

আমার ক্ষেত্রে আমি পরীক্ষার জন্য একটি কাস্টম বিল্ড কনফিগারেশন ব্যবহার করেছি (ডাকা Test) এবং cocoapodsনির্ভরতা পরিচালক হিসাবেও

Podfileপরীক্ষারযোগ্যতা সক্ষম করতে আমার শেষের দিকে আমাকে নিম্নলিখিত লাইনগুলি যুক্ত করতে হয়েছিল

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            if config.name == 'Test'
                config.build_settings['ENABLE_TESTABILITY'] = 'YES'
            end
        end
    end
end

ডিফল্টরূপে cocoapodsসেট ENABLE_TESTABILITYকরার YESজন্য Debugতৈরী করে


13

নিশ্চিত হয়ে নিন যে আপনি আপনার অ্যাপ্লিকেশন প্রকল্পের আওতায় আপনার চেকবক্সগুলি সঠিকভাবে সেট করেছেন। আপনি উচিত টিকমুক্ত সংরক্ষাণাগার বিল্ড জন্য আপনার পরীক্ষার লক্ষ।

এখানে চিত্র বর্ণনা লিখুন


2
আরও তথ্যের জন্য এখানে দেখুন: developer.apple.com/library/mac/technotes/tn2215/_index.html
পি। পাভলু

8

আপনারা যারা কেবলমাত্র এক্সকোড প্রোফাইলার চালানোর মাধ্যমেই এটির অভিজ্ঞতা অর্জন করছেন: আপনার স্কিম ব্যবস্থাপনায় প্রোফাইল বিল্ড কনফিগারেশনটিকে যা পরীক্ষাযোগ্যতা সক্ষম করেছে তার সাথে স্যুইচ করুন - এবং এটি বেশিরভাগ ক্ষেত্রেই ডিবাগ হবে:

এখানে চিত্র বর্ণনা লিখুন


4

এটি সম্ভবত কারণ আপনার মূল লক্ষ্য Enable Testabilityসেট করা হয়েছে NO। আপনার YESএটি ডিবাগ স্কিমে সেট করা উচিত (যা আপনার পরীক্ষা চালানোর জন্য ব্যবহৃত হয়)।

যদি আপনি কার্থেজ ব্যবহার করেন তবে এই ফ্রেমওয়ার্কগুলি আমদানি করার কারণে এই সমস্যা দেখা দিতে পারে @testable, কারণ সেগুলি একটি রিলিজ স্কিম দিয়ে তৈরি।

বেশিরভাগ সময় সেই উপসর্গটির সাথে ফ্রেমওয়ার্কগুলি আমদানি করা খারাপ অভ্যাস, যাতে আপনি এড়াতে পারেন। যদি আপনি না করতে পারেন তবে আপনার Enable Testabilityফ্রেমওয়ার্কের মুক্তির স্কিম থাকা উচিত । https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326


2
আমি কীভাবে @ টেস্টেবল ব্যবহার করে ফ্রেমওয়ার্ক আমদানি এড়াতে পারি? এখানে ভাল অনুশীলন কি?
জোনাথন ক্যাবেরা

3

বিট্রিজ ব্যবহার করে পরীক্ষা চালানোর সময় আমি এই ত্রুটিটি পেতে শুরু করেছি।

ভিন্ন অন্যান্য ব্যবহারকারীদের বলছেন, এই নয় প্রতি Targetভিত্তি, অথবা প্রতি Schemaভিত্তি, এটা হল প্রতি Configurationভিত্তিতে। Target-> Build Settingsট্যাব -> সন্ধান করুন -> আপনি যে কনফিগারেশনটি ব্যবহার করছেনtestability তাতে এটি সক্ষম করুন ।

দয়া করে নোট করুন যে অ্যাপল স্টোরের জন্য নয়, আপনি ডিবাগিংয়ের জন্য ব্যবহার করছেন এমন কনফিগারেশনটিতে এটি সক্ষম করার পরামর্শ দেয়।


0

আপনি শুঁটি / কার্থেজ ব্যবহার করে থাকেন তবে উপরের সমাধানটি ঠিক আছে। তবে আপনি যদি আইওএস থেকেই 'উদাহরণস্বরূপ পরিচিতিগুলি' থেকে ফ্রেমওয়ার্কগুলি ব্যবহার করেন তবে আপনার মূল প্রকল্পের টার্গেটের 'লাইব্রেরি অনুসন্ধানের পথগুলিতে' এই ফ্রেমওয়ার্কগুলিতে পাথ যুক্ত করতে হবে। এখানে চিত্র বর্ণনা লিখুন


0

যদি আপনি কাঠামোটি পরীক্ষা করার চেষ্টা করছেন:

পরীক্ষার টার্গেটে যান -> ফেজ তৈরি করুন -> নতুন কপি ফাইলের ফেজ তৈরি করুন -> ফ্রেমওয়ার্কগুলি চয়ন করুন -> সমস্ত পুনরাবৃত্তভাবে ব্যবহৃত ফ্রেমওয়ার্ক যুক্ত করুন


0

যদি কোন সুযোগ দ্বারা

install! 'cocoapods',
         generate_multiple_pod_projects: true,
         incremental_installation: true

তারপরে, এটি এটি করার উপায়।

    # generated_projects only returns results if the we run "pod install --clean-install"
    # or install a pod for the first time

    installer.generated_projects.each do |project|
        project.build_configurations.each do |configuration|
            configuration.build_settings["ENABLE_TESTABILITY"] = "YES" 
        end
    end

-3

এটি এক্সকোড 8 এর আগে আমার প্রকল্পগুলিতে ঘটেনি, তবে আমি এক্সকোড 8-তে উন্নীত হওয়ার পরে এটি আমাকে বিভ্রান্ত করেছে।

এখানে পোস্ট করা উত্তরগুলি আমার সমস্যার সমাধান করতে পারেনি। আমার জন্য, আমি কেবল এই পরীক্ষাগুলি খালি করেছি কারণ এটির প্রয়োজন নেই। সুতরাং পরীক্ষার বোতামগুলি নির্বাচন করুন:

এখানে চিত্র বর্ণনা লিখুন এবং এখন ত্রুটিটি চলে গেছে।


1
আপনার যদি পরীক্ষাগুলির প্রয়োজন না হয় তবে সমস্ত প্রকল্পগুলি থেকে সরানোর পরিবর্তে আপনার প্রকল্পের পরীক্ষার লক্ষ্যগুলি সরিয়ে ফেলা ভাল।
জোনাথন ক্যাবেরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.