কোকোপডস সহ এক্সকোড ইউনিট পরীক্ষা করা


119

আমি গত কয়েক দিন ধরে এটির সাথে একটি প্রাচীরের বিরুদ্ধে মাথা ঘুরছি তবে একাধিক গুগল / এসও / গিথুব অনুসন্ধান সত্ত্বেও আমার যে সমস্যাগুলি রয়েছে তার সমাধান খুঁজে পাচ্ছি না!

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

আমি এক্সকোড 7.3.1 এবং কোকোপডগুলি 1.0.1 ব্যবহার করছি। আপডেট: ইস্যুটি Xcode 8.0 এর সাথে রয়ে গেছে

এই পডফিলের সাথে:

platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!

target 'MyApp' do
    pod 'Firebase'
    pod 'Firebase/Auth'
    pod 'Firebase/Database'
    pod 'Firebase/Storage'

    target 'MyAppTests' do
        inherit! :search_paths
    end
end

আমার এক্সসিটিস্ট ক্লাসে আমি পাই

প্রয়োজনীয় মডিউল 'ফায়ারবেস' অনুপস্থিত

ত্রুটি @testable import MyApp

বিকল্পভাবে এই পডফাইলে:

platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!

def common_pods
    pod 'SwiftyTimer'
    pod 'Firebase'
    pod 'Firebase/Auth'
    pod 'Firebase/Database'
    pod 'Firebase/Storage'
end

target 'MyApp' do
    common_pods
end

target 'MyAppTests' do
    common_pods
end

পরীক্ষাগুলি তৈরি হয় তবে আমার কনসোলটি সতর্কতার সাথে আবদ্ধ হয় যেমন:

ক্লাস <-FirebaseClassName-> উভয়ই প্রয়োগ করা হয়েছে ... মাই অ্যাপ ... এবং ... মাই অ্যাপ্লায়স্টেস ... দু'জনের মধ্যে একটি ব্যবহার করা হবে। কোনটি অপরিজ্ঞাত


আমি কেবল ফায়ারবেস অ্যানালিটিক্স ব্যবহার করছিলাম। গুগল বিশ্লেষণে স্থানান্তরিত করার পরে সমস্ত কিছুই কবজির মতো কাজ করে।
মারোসোয়ায়ে

আমি এখনও তার নিজের চেষ্টা করি নি তবে ফায়ারবেস ম্যানুয়ালি কোকো পোড
জনি

1
এটি এখনও একটি সমস্যা
এডওয়ার্ড

উত্তর:


84

আমারো একই ইস্যু ছিল. আমি pod 'Firebase'আমার পরীক্ষার লক্ষ্যে গিয়ে সমাধান করেছি । আপনার পডফাইলে এতে পরিবর্তন করুন:

platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!

target 'MyApp' do
    pod 'Firebase/Auth'
    pod 'Firebase/Database'
    pod 'Firebase/Storage'

    target 'MyAppTests' do
        inherit! :search_paths
        pod 'Firebase'
    end
end

ধন্যবাদ তবে আমি এটি চেষ্টা করেছিলাম এবং এখনও আমার কাছে "ক্লাস ... উভয় ক্ষেত্রে প্রয়োগ করা হয়েছে ..." ইস্যু রয়েছে।
ডুভারগুলি

1
এটি আমার পক্ষে কাজ করেছে তবে এখনও তা আমার কাছে বোধগম্য নয়। এটি আমি প্রথমবার বলতে পারি না ফায়ারবেস তাদের পোডস্পেকগুলি অদ্ভুতভাবে স্থাপন করছে, সিএফ। twitter.com/dirtyhenry/status/836240557311684608 তবে ফায়ারবেস দল জবাব দেয় না :(
ডার্টি হেনরি

4
এই পরিবর্তনটি করা অবিলম্বে সতর্কবার্তাটি সরিয়ে দেয়নি, তবে আমার দৌড়ানোর পরে এটি সমাধান হয়ে গেছে pod install
blinkters

অর্ধেক সমস্যার সমাধান হয়েছে। এবং অন্যান্য অর্ধেকটি কেবলমাত্র বিল্ড সেটিংস -> শিরোনাম অনুসন্ধানের পথের অধীনে
হোল্ডার সন্ধানের পথগুলিতে

আপনি এই পরিবর্তনটি করার পরে pod installপ্রকল্প নির্ভরতা আপডেট করতে চালাতে ভুলবেন না ;)
জাওয়াদ

57

উত্তরাধিকার :completeহিসাবে এখানে পরিবর্তন করার চেষ্টা করুন :

target 'MyAppTests' do
    inherit! :complete
end

গুরুত্বপূর্ণভাবে এটি অন্য যে কেউ আপনার রেপো যাচাই করে কেবল ফাইল তৈরির pod updateজন্য অনুলিপি .xcconfigবা অন্যান্য হ্যাকারি না করে কেবল একটি সাধারণ কাজ করার অনুমতি দেয়।


1
এটিতে "শ্রেণি ... উভয় ক্ষেত্রেই প্রয়োগ করা হয় ..." ইস্যু রয়েছে
ডায়োগো টি

এটি সংকলনের সময় ত্রুটিটি অদৃশ্য হয়ে গেছে, তবে রানটাইমের সময় এটিকে সৃষ্টি করেছে: ঝনঝন: ত্রুটি: লিঙ্কার কমান্ডটি প্রস্থান কোড 1 সহ (ব্যর্থতা দেখার জন্য -v ব্যবহার করুন) ব্যর্থ হয়েছে
সিএমন্ট

আমার জন্যও কাজ করেছেন! ধন্যবাদ :)
এসএমপস

52
  1. আপনার ইউনিট পরীক্ষার টার্গেট সেটিংটি নির্বাচন করুন।
  2. বিল্ড সেটিংসে যান।
  3. শিরোনাম অনুসন্ধানের পথ অনুসন্ধান করুন।
  4. পুনরাবৃত্তকারী সহ এই মানটি $ (এসআরক্রট) / পডগুলি যুক্ত করুন, তারপরে এক্সকোড আপনার জন্য পথটি সমাধান করবে।

উদাহরণ


1
ধন্যবাদ @ কানিকা শর্মা
রাহুল কে রাজন

34

সমস্যাটি হ'ল ফায়ারবেস কোকোপডস সেটিংটির জন্য নিজস্ব মান উত্পন্ন করার পরে শিরোনাম অনুসন্ধানের পথগুলির সাথে বিশেষ কিছু করে যাতে কোকোপডগুলি পরীক্ষার লক্ষ্যে পৌঁছানোর জন্য এই পরিবর্তনটি গ্রহণ না করে। আপনি দুটি উপায়ের মধ্যে এটি সমাধান করতে পারেন:

  1. MyAppTests.<configuration>.xcconfigফাইল নেভিগেটরে সন্ধান করুন এবং নিম্নলিখিতটিতে যুক্ত করুন HEADER_SEARCH_PATHS:

    ${PODS_ROOT}/Firebase/Analytics/Sources [*]

  2. বিল্ড সেটিংসে শিরোলেখ অনুসন্ধানের পথগুলির জন্য সেটিংসটি সন্ধান করুন এবং তালিকায় বিকল্প বিকল্প 1 এর মতো একই মান যুক্ত করুন। আপনার এটি পুনরাবৃত্ত হিসাবে সেট করার প্রয়োজন হবে না।

একেএম এর মন্তব্য ${PODS_ROOT}/Firebase/Core/Sourcesঅনুসারে এটি 3.14.0 সংস্করণে পরিবর্তিত হয়েছে


চেষ্টা করেছেন কিন্তু এখনও একই সতর্কতা পেয়েছেন
ডুভারগুলি

8
ফায়ারবেস 3.14.0 হিসাবে এই সমাধানটি বৈধ, তবে প্যাচটি পরিবর্তিত হয়েছে${PODS_ROOT}/Firebase/Core/Sources
একেএম

1
নতুন পথও আমার পক্ষে কাজ করেছিল! আমি কোকোপডস সংস্করণ ১.২.০ চালাচ্ছি তবে মনে রাখবেন আমাকেও inherit! :search_pathsপরীক্ষার লক্ষ্যটিতে যুক্ত করতে হয়েছিল Podfile
পাওলো ম্যাটোস

2. আমার জন্য কাজ করে না। ফায়ারবেস 3.x ব্যবহার (নতুন 4.x নয়)
জনি

ইস্যুটি এখানে অনুসরণ করা যেতে পারে: github.com/firebase/firebase-ios-sdk/issues/58
CMont

7

আমি এটি কাজ করার আগে তিনটি পদক্ষেপ:

কোকোপডস: 1.5.0 সুইফ্ট 4 ফায়ারবেস: 4.13.0

পদক্ষেপ 1: আপনার পোডফাইলে নিম্নলিখিত টার্গেট ব্লকটি যুক্ত করার বিষয়টি নিশ্চিত করুন।

# Uncomment the next line to define a global platform for your project
platform :ios, '11.3'

target 'TIMII' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for TIMII
pod 'Firebase/Core'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Storage'

    target 'TIMIITests' do
        inherit! :search_paths
        pod 'Firebase/Core'
    end

end

পদক্ষেপ 2: আপনার অ্যাপ্লিকেশন প্রকল্পের নেভিগেটর বিল্ড সেটিংস ট্যাবটির মধ্যে। শিরোনাম অনুসন্ধানের পথ সারিটি সন্ধান করুন এবং নিম্নলিখিত লাইনে ডিবাগ যুক্ত করুন

$ (উত্তরাধিকারসূত্রে) $ O PODS_ROOT} / ফায়ারবেস / কোর / উত্স

পদক্ষেপ 3: টার্মিনাল রান:

শুঁটি আপডেট


7

সমস্যাটি এখানে ফায়ারবেস প্রকল্পে রেকর্ড করা হয়েছে:

https://github.com/firebase/firebase-ios-sdk/issues/58

একটি কার্যনির্বাহী আছে:

কেবলমাত্র বিল্ড সেটিংস -> শিরোনাম অনুসন্ধানের পাথের অধীনে আপনার পরীক্ষার লক্ষ্যমাত্রায় "{{PODS_ROOT} / ফায়ারবেস / কোর / উত্স" যুক্ত করুন

তবে এটি কোকোপডস ১.৪.০ বা তারপরে উন্নীত করেও ঠিক করা হয়েছে এটি একটি আরও ভাল সমাধান।

আমি এটি লিখছি (নভেম্বর 2017) কোকোপডস 1.4.0 এখনও বিটাতে রয়েছে তাই এটি ইনস্টল করতে আপনাকে স্পষ্টভাবে বিটাকে অনুরোধ করতে হবে:

gem install cocoapods --pre

এটি এবং তারপরে pod installআমার পরীক্ষাগুলি চালানো সমস্যার সমাধান করছে ।


1
এটা "PODS_ROOT" কি ??
আরগাপিকে

@ আরগাপেকে এটি একটি পরিবর্তনশীল যা কোকোপোড সেট করে। এক্সকোডের মধ্যে আমি "" এর মধ্যে যা লিখেছি ঠিক তা পেস্ট করুন। সত্যই সর্বোত্তম উপায় হ'ল আপনার কোকোপডগুলি> = 1.4.0 এ আপগ্রেড করা।
জোসেফ এইচ

1
দুর্ভাগ্যক্রমে, জোসেফ এইচপি আমার কোকোপোডগুলি 1.5.2 এ আপডেট করা সমস্যার সমাধান করেনি।
স্ট্যাসি স্মিথ

@ আন্নাটাসিয়া কোভালেভা আপনি কি pod installআপগ্রেড করার পরে চালিয়েছেন ?
জোসেফএইচ

@ জোসেফ এইচ রান pod installআমার সমস্যার সমাধান! অনেক ধন্যবাদ!
স্টেসি স্মিথ

4

আমার জন্য সমাধানটি ছিল কোকোপডগুলি সংস্করণ 1.1.0.rc.2 এ আপডেট করা।

sudo gem install cocoapods --pre


দুর্ভাগ্যক্রমে এটি আমার পক্ষে কাজ করে না ... আমাকে আমার উর্ধ্বতনটি ফিরিয়ে নিতে হবে!
জেব 8

দুঃখিত, এটি আপনাকে ছেলেদের সাহায্য করতে পারেনি, কেন এটি আমার জন্য সমস্যাটি সমাধান করেছিল এবং আপনি নয় তা নিশ্চিত নন ...
ডুভার্স

আমি 1.20 এ আছি এবং ভাগ্য নেই
ইউকেডাটাগিজ

4

আমি উপরোক্ত সমস্তগুলি চেষ্টা করে দেখতে পেয়েছি Missing required module 'Firebase'এবং মূলত শুরু করে , তারপর "Class ... is implemented in both ... "যদি আমি ফায়ারবেস পোডগুলিকে আমার পরীক্ষার লক্ষ্যবস্তুতে যুক্ত করার চেষ্টা করি তবে বিভিন্ন সমস্যা বা ত্রুটি ঘটতে শুরু করি।

আমার জন্য যে সমাধানটি কাজ করেছিল তা হ'ল:

  1. এক্সকোড প্রকল্পটি সিঙ্কে রয়েছে তা নিশ্চিত করতে পডফিল থেকে সম্পূর্ণ পরীক্ষার টার্গেট সরান এবং 'পড আপডেট' চালান।
  2. আমার পরীক্ষার লক্ষ্যমাত্রার বিল্ড সেটিংসটি খুলুন এবং কেবলমাত্র নিম্নলিখিত 3 টি আইটেম অন্তর্ভুক্ত করতে শিরোনাম অনুসন্ধানের পথ আপডেট করুন:
    • $(inherited) non-recursive
    • $(SRCROOT)/Pods/Headers/Public recursive
    • $(SRCROOT)/Pods/Firebase recursive

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


এই থ্রেডে অন্য সমস্ত কিছুর চেষ্টা করার পরে - এটিই ছিল কেবল উত্তর যা আমার জন্য জিনিসগুলি কাজ করে। ধন্যবাদ!
আলী পারর

4

যোগ করার পদ্ধতি ${SRCROOT}/Pods/Firebase/CoreOnly/Sourcesইউনিট পরীক্ষা লক্ষ্য এর "শিরোলেখ অনুসন্ধান পাথ" সমস্যা সংশোধন করুন। পদক্ষেপ:

  1. আপনার ইউনিট পরীক্ষার লক্ষ্য নির্বাচন করুন
  2. বিল্ড সেটিংসে যান
  3. জন্য অনুসন্ধান করুন হেডার সন্ধানের পাথ
  4. যোগ $ {SRCROOT} / Pods / Firebase / CoreOnly / সোর্স

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

এর পরে পরীক্ষাগুলি চলতে পারে এবং ত্রুটিটি অদৃশ্য হয়ে যায়।


2

আমারও একই সমস্যা ছিল। আপনার প্রশ্নের পদে বাক্যযুক্ত, আমি আমার MyApp.<configuration>.xcconfigফাইলের সামগ্রীগুলি আমার ফাইলে অনুলিপি করেছি MyAppTests.<configuration>.xcconfig। আমি পরীক্ষাগুলি পরিষ্কার করে তৈরি করেছি এবং এটি কার্যকর হয়েছে।


এটি আমার জন্য কাজ করা একমাত্র সমাধান ছিল। ধন্যবাদ! আমি পোডফাইলে একটি পোস্ট ইনস্টল প্রক্রিয়াজাতকরণের বিষয়ে এটি করার বিষয়ে ভাবছি
সাওলোটটি


1

হিসাবে @Will প্রায় একটি বিষয় উল্লেখ করা শিরোলেখ অনুসন্ধান পথ CocoaPods ইনস্টলেশনের পরে।

আমার একাধিক লক্ষ্যবস্তু নিয়ে একটি প্রকল্প রয়েছে যেখানে পড 'ফায়ারবেস' পৃথক মডিউলে এম্বেড হয়েছে, এটি বলতে দিন MyProject-Shared। 'পডফাইলে' ফায়ারবেস পোড কেবলমাত্র 'মাইপ্রজেক্ট-শেয়ার্ড' টার্গেটের জন্য ইনস্টল করা হয়েছে। অন্যান্য মডিউল, যা 'মাইপ্রজেক্ট-ভাগ' ব্যবহার করতে চায় একটি ত্রুটির কারণে সংকলন করা যায় না:

'ফায়ারবেস "প্রয়োজনীয় মডিউলটি অনুপস্থিত

আমার ক্ষেত্রে কৌশলটি হ'ল বিশ্লেষণ-ফ্রেমওয়ার্কের জন্য প্রতিটি টার্গেটের বিল্ড সেটিংসে উল্লেখ করে নিম্নলিখিত শিরোনাম অনুসন্ধানের পথটি অন্তর্ভুক্ত করা :

"${PODS_ROOT}/Firebase/CoreOnly/Sources"

নীচে ছবি দেখুন: শিরোনাম অনুসন্ধানের পথ

আশা করি এটি আপনার সময় সাশ্রয় করবে।



0

Missing required module Firebase কোন কোকোপডস সমাধান নেই

যারা একই সমস্যার মুখোমুখি হন তবে কোকোপড ব্যবহার করছেন না তাদের জন্য:

আপনি যদি ফায়ারবেস ব্যবহার করছেন তবে আপনার কিছু ফাইল Firebase.hএবং module.modulemapফাইল রয়েছে। উদাহরণ স্বরূপ -YOUR_PROJECT_DIR/Linking

আপনার প্রধান প্রকল্পের লক্ষ্যটি যদি সঠিকভাবে কাজ করে তবে আপনার প্রকল্পের -> লক্ষ্যগুলিতে যাওয়া উচিত। পরীক্ষার লক্ষ্য নির্বাচন করুন। অনুসন্ধান User headersকরুন এবং এর পথে যুক্ত করুন YOUR_PROJECT_DIR/Linkingrecursiveবিকল্প নির্বাচন করুন এবং আপনি যেতে ভাল হওয়া উচিত।

আরও বিশদ জন্য স্ক্রিনশট দেখুন:

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

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