পরীক্ষা বিষয়বস্তু প্রদানকারী

আপনি যদি ডেটা সঞ্চয় এবং পুনরুদ্ধার করার জন্য বা অন্যান্য অ্যাপে ডেটা অ্যাক্সেসযোগ্য করার জন্য একটি বিষয়বস্তু প্রদানকারীকে প্রয়োগ করেন, তাহলে আপনার প্রদানকারীকে পরীক্ষা করা উচিত যাতে এটি অপ্রত্যাশিতভাবে আচরণ না করে। এই পাঠটি কীভাবে সর্বজনীন বিষয়বস্তু প্রদানকারীদের পরীক্ষা করতে হয় তা বর্ণনা করে এবং আপনি আপনার নিজের অ্যাপে গোপন রাখা প্রদানকারীদের জন্যও প্রযোজ্য।

বিষয়বস্তু প্রদানকারীদের জন্য ইন্টিগ্রেশন পরীক্ষা তৈরি করুন

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

আপনার সামগ্রী প্রদানকারীকে বিচ্ছিন্নভাবে পরীক্ষা করতে, ProviderTestCase2 ক্লাস ব্যবহার করুন। এই ক্লাসটি আপনাকে প্রকৃত ব্যবহারকারীর ডেটাকে প্রভাবিত না করেই ফাইল এবং ডাটাবেসের তথ্য অ্যাক্সেস করতে IsolatedContext এবং MockContentResolver মতো অ্যান্ড্রয়েড মক অবজেক্ট ক্লাস ব্যবহার করতে দেয়।

আপনার ইন্টিগ্রেশন পরীক্ষা একটি JUnit 4 পরীক্ষার ক্লাস হিসাবে লেখা উচিত। JUnit 4 পরীক্ষার ক্লাস তৈরি করা এবং JUnit 4 দাবিগুলি ব্যবহার করার বিষয়ে আরও জানতে, একটি স্থানীয় ইউনিট টেস্ট ক্লাস তৈরি করুন দেখুন।

আপনার সামগ্রী প্রদানকারীর জন্য একটি ইন্টিগ্রেশন পরীক্ষা তৈরি করতে, আপনাকে অবশ্যই এই পদক্ষেপগুলি সম্পাদন করতে হবে:

  1. ProviderTestCase2 এর একটি সাবক্লাস হিসাবে আপনার পরীক্ষার ক্লাস তৈরি করুন।
  2. AndroidJUnitRunner ক্লাসটি নির্দিষ্ট করুন যা AndroidX টেস্ট আপনার ডিফল্ট পরীক্ষা রানার হিসাবে প্রদান করে।
  3. ApplicationProvider ক্লাস থেকে Context অবজেক্ট সেট করুন। একটি উদাহরণের জন্য নীচের স্নিপেট দেখুন.

কোটলিন

@Throws(Exception::class)
override fun setUp() {
  super.setUp()
  context = ApplicationProvider.getApplicationContextC<ontext(>)
}

জাভা

@Override
protected void setUp() throws Exception {
  super.setUp();
  setContext(ApplicationProvider.getApplicationContext());
}

কিভাবে ProviderTestCase2 কাজ করে

আপনি ProviderTestCase2 এর একটি সাবক্লাস দিয়ে একজন প্রদানকারীকে পরীক্ষা করেন। এই বেস ক্লাসটি AndroidTestCase প্রসারিত করে, তাই এটি JUnit টেস্টিং ফ্রেমওয়ার্কের পাশাপাশি অ্যাপ্লিকেশন অনুমতিগুলি পরীক্ষা করার জন্য Android-নির্দিষ্ট পদ্ধতি প্রদান করে। এই শ্রেণীর সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্য হল এর শুরু, যা বিচ্ছিন্ন পরীক্ষার পরিবেশ তৈরি করে।

সূচনা

ProviderTestCase2 এর কনস্ট্রাক্টরে আরম্ভ করা হয়, যা সাবক্লাসগুলি তাদের নিজস্ব কনস্ট্রাক্টরকে কল করে। ProviderTestCase2 কনস্ট্রাক্টর একটি IsolatedContext অবজেক্ট তৈরি করে যা ফাইল এবং ডাটাবেস অপারেশনের অনুমতি দেয় কিন্তু অ্যান্ড্রয়েড সিস্টেমের সাথে অন্যান্য মিথস্ক্রিয়া বন্ধ করে দেয়। ফাইল এবং ডাটাবেস ক্রিয়াকলাপগুলি নিজেই একটি ডিরেক্টরিতে সঞ্চালিত হয় যা ডিভাইস বা এমুলেটরের স্থানীয় এবং একটি বিশেষ উপসর্গ রয়েছে।

কনস্ট্রাক্টর তারপর পরীক্ষার জন্য সমাধানকারী হিসাবে ব্যবহার করার জন্য একটি MockContentResolver তৈরি করে।

অবশেষে, কনস্ট্রাক্টর পরীক্ষার অধীনে প্রদানকারীর একটি উদাহরণ তৈরি করে। এটি একটি সাধারণ ContentProvider বস্তু, কিন্তু এটি IsolatedContext থেকে এর সমস্ত পরিবেশের তথ্য নেয়, তাই এটি বিচ্ছিন্ন পরীক্ষার পরিবেশে কাজ করার জন্য সীমাবদ্ধ। টেস্ট কেস ক্লাসে করা সমস্ত পরীক্ষা এই বিচ্ছিন্ন বস্তুর বিরুদ্ধে চলে।

আপনি সামগ্রী প্রদানকারীদের জন্য ইন্টিগ্রেশন পরীক্ষা চালান যেভাবে যন্ত্রযুক্ত ইউনিট পরীক্ষার মতো।

কি পরীক্ষা করতে হবে

কন্টেন্ট প্রদানকারীদের পরীক্ষা করার জন্য এখানে কিছু নির্দিষ্ট নির্দেশিকা রয়েছে।

  • সমাধানকারী পদ্ধতির সাথে পরীক্ষা করুন : যদিও আপনি ProviderTestCase2 এ একটি প্রদানকারী বস্তুকে ইনস্ট্যান্টিয়েট করতে পারেন, আপনার সর্বদা উপযুক্ত URI ব্যবহার করে একটি সমাধানকারী বস্তুর সাথে পরীক্ষা করা উচিত। এটি করা নিশ্চিত করে যে আপনি একই ইন্টারঅ্যাকশন সম্পাদন করে প্রদানকারীকে পরীক্ষা করছেন যা একটি নিয়মিত অ্যাপ্লিকেশন ব্যবহার করবে।
  • একটি চুক্তি হিসাবে একটি পাবলিক প্রদানকারী পরীক্ষা করুন : আপনি যদি আপনার প্রদানকারীকে সর্বজনীন এবং অন্যান্য অ্যাপ্লিকেশনের জন্য উপলব্ধ করতে চান, তাহলে আপনার এটি একটি চুক্তি হিসাবে পরীক্ষা করা উচিত। এটি কীভাবে করবেন তার কিছু উদাহরণ নিম্নরূপ:
    • আপনার প্রদানকারী সর্বজনীনভাবে প্রকাশ করে এমন ধ্রুবকগুলির সাথে পরীক্ষা করুন। উদাহরণস্বরূপ, ধ্রুবকগুলি সন্ধান করুন যা সরবরাহকারীর ডেটা টেবিলগুলির একটিতে কলামের নামগুলিকে উল্লেখ করে৷ এগুলি সর্বদা প্রদানকারী দ্বারা সর্বজনীনভাবে সংজ্ঞায়িত হওয়া উচিত।
    • আপনার প্রদানকারী অফার করে এমন সমস্ত URI পরীক্ষা করুন। আপনার প্রদানকারী বেশ কয়েকটি URI অফার করতে পারে, যার প্রত্যেকটি ডেটার একটি ভিন্ন দিক উল্লেখ করে।
    • অবৈধ URI পরীক্ষা করুন। আপনার ইউনিট পরীক্ষায় ইচ্ছাকৃতভাবে একটি অবৈধ URI সহ সরবরাহকারীকে কল করা উচিত এবং ত্রুটিগুলি সন্ধান করা উচিত। একটি ভাল প্রদানকারী নকশা অবৈধ URI-এর জন্য একটি IllegalArgumentException নিক্ষেপ করা।
  • স্ট্যান্ডার্ড প্রদানকারীর মিথস্ক্রিয়া পরীক্ষা করুন : বেশিরভাগ প্রদানকারী ছয়টি অ্যাক্সেস পদ্ধতি অফার করে: query() , insert() , delete() , update() , getType() , এবং onCreate() । আপনার পরীক্ষাগুলি যাচাই করা উচিত যে এই সমস্ত পদ্ধতি কাজ করে।
  • ব্যবসায়িক যুক্তি পরীক্ষা করুন : যদি বিষয়বস্তু প্রদানকারী ব্যবসায়িক যুক্তি প্রয়োগ করে, তাহলে আপনার এটি পরীক্ষা করা উচিত। ব্যবসায়িক যুক্তির মধ্যে রয়েছে অবৈধ মানগুলি পরিচালনা করা, আর্থিক বা গাণিতিক গণনা, নির্মূল করা বা সদৃশগুলির সংমিশ্রণ।