অ্যান্ড্রয়েড গ্রেডলে টেস্টকম্পাইল এবং অ্যান্ড্রয়েড টেস্টকম্পাইল সম্পর্কে বিভ্রান্ত


87

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

কেউ কি উভয়র মধ্যে পার্থক্য ব্যাখ্যা করতে পারে এবং এর মধ্যে কোনটি রোবलेक्ट্রিক ব্যবহার করার সময় ব্যবহার করা উচিত?

উত্তর:


120

কেবলমাত্র testCompileইউনিট পরীক্ষা জন্য কনফিগারেশন (যাদের অবস্থিত src / পরীক্ষা ) এবং androidTestCompile(যে অবস্থিত পরীক্ষা API জন্য ব্যবহার করা হয় src / androidTest )। যেহেতু আপনি ইউনিট পরীক্ষা লেখার ইচ্ছা করছেন, আপনার ব্যবহার করা উচিত testCompile

আপডেট: দুজনের মধ্যে প্রধান পার্থক্য testহ'ল সোর্সसेटটি নিয়মিত জাভা জেভিএম- androidTestতে চালিত হয় , অন্যদিকে সোর্সেট পরীক্ষাগুলি অ্যান্ড্রয়েড ডিভাইসে (বা একটি এমুলেটর) চালিত হয়।


ধন্যবাদ এটিই আমি প্রথমে আবিষ্কার করেছি, তবে সে ক্ষেত্রে যদি টেস্টকম্পাইলের সাথে কিছু রেফারেন্স রোবलेक्ट্রিক নির্ভরতা হয় এবং কিছু অ্যান্ড্রয়েড টেস্টকম্পাইল সহ। এটি কি লাইব্রেরি নয় যা ইন্টিগ্রেশন টেস্ট লিখতে সহায়তা করে? যদি তাই হয় তবে এটিকে অ্যান্ড্রয়েড টেস্টকম্পাইলের সাথে উল্লেখ করা উচিত নয়? তবে এমনকি রোবলেট্রিকের সরকারী গাইডও টেস্টকম্পাইল ব্যবহারের নির্দেশ দেয় ... দুঃখিত তবে আপনি দেখতে পাচ্ছেন এটি এ মুহূর্তে আমার কাছে খুব বিভ্রান্তিকর।
লুকাস

4
নামকরণের সম্মেলনগুলি কিছুটা অদ্ভুত। মূলত, আপনি যদি ইউনিট পরীক্ষা লিখছেন (পরীক্ষাগুলি যা ডিভাইসে চালিত হবে না) তবে সেগুলি 'src / test' তে উপস্থিত থাকে এবং সুতরাং তাদের নির্ভরতা testCompileকনফিগারেশনের অন্তর্ভুক্ত। androidTestCompileকনফিগারেশনে যুক্ত নির্ভরতাগুলি কেবলমাত্র 'src / androidTest' এর উত্সের জন্য উপলভ্য হবে, যা আসলে একটি APK এ নির্মিত এবং একটি ডিভাইসে স্থাপন করা হয়েছে।
মার্ক ভিয়েরা

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

4
এটি মূলত শব্দার্থবিজ্ঞান, তাই আমি তাদের সাথে ঝুলতে চাই না। রোবইলেক্ট্রিকের সাথে লিখিত অনেকগুলি পরীক্ষা যুক্তিযুক্তভাবে ইন্টিগ্রেশন টেস্ট, এবং কোনওভাবেই ইউনিট পরীক্ষা নয়। বলা হচ্ছে, দুজনের মধ্যে প্রধান পার্থক্য হ'ল 'এসসিআর / টেস্ট' একটি মানক জেভিএম-এর বিকাশকারী মেশিনে চালিত হয় এবং 'এসসিআর / অ্যান্ড্রয়েড টেস্ট' একটি APK এ প্যাকেজ করা হয় এবং একটি আসল ডিভাইসে (বা এমুলেটর) চালিত হয়।
মার্ক ভিয়েরা

4
আমি মনে করি আপনি 'src / টেস্ট' এর জন্য যে সমর্থনটি দেখেছেন তা কেবল স্ট্যান্ডার্ড গ্রেডল জাভা প্লাগইন এর মাধ্যমে উপলব্ধ ছিল। অতএব, স্বাদ বা প্রকার তৈরির জন্য কোনও সমর্থন ছিল না। এখন অ্যান্ড্রয়েড প্লাগইন প্রতি ইউনিটে পরীক্ষার উত্স সেট অন্তর্ভুক্ত ইউনিট পরীক্ষার জন্য সম্পূর্ণ সমর্থন আছে।
মার্ক ভিয়েরা

3

আপনার প্রশ্নের উত্তর দেওয়ার জন্য - রোবलेक्ट্রিকের জন্য টেস্টকম্পাইল ব্যবহার করুন

কেন, কারণ রোবलेक्ट্রিক জেভিএমের সমস্ত অ্যান্ড্রয়েড ডিভাইস আচরণকে উপহাস করে চলে on

টেস্টকোম্পাইল এবং অ্যান্ড্রয়েড টেস্টকম্পাইল হ'ল "কনভেনশন দ্বারা" অ্যান্ড্রয়েড ফোল্ডার যা অ্যান্ড্রয়েড প্লাগইন দ্বারা সরবরাহিত কাজগুলি চালনার সময় গ্রেডল ব্যবহার করে।

androidTestDebug androidTest ফোল্ডার থেকে পরীক্ষা নেয়, টেস্টডিবাগ পরীক্ষা ফোল্ডার থেকে পরীক্ষা নেয়,

এগুলি কেবল কনভেনশন ফোল্ডারগুলির সাহায্যে আপনি এই কনফিগারেশনের জন্য সোর্স সেট দিতে পারেন

দ্রষ্টব্য: এস্প্রেসো এমন একটি দুর্দান্ত লাইব্রেরি যা রোবোলেট্রিক থেকে দূরে সরে যাওয়ার চেষ্টা করে :)


1

//অংশ পরিক্ষাকরণ

testCompile 'junit:junit:4.12'

উপরের কোডটি অ্যান্ড্রয়েড স্টুডিওতে build.gradle ফাইলে JUnit 4 এর নির্ভরতা। আপনি দেখতে পাচ্ছেন যে এটিতে টেস্টম্পাইল রয়েছে, বিউকাস JUnit JVM এ চলে এবং চালানোর জন্য কোনও ডিভাইস বা এমুলেটর প্রয়োজন হয় না। এর অর্থ হ'ল JUnit পরীক্ষা চালানোর জন্য অ্যাপ্লিকেশন প্রসঙ্গে প্রয়োজন হবে না এবং যদি তাদের প্রয়োজন হয় তবে আমাদের সেগুলি "MOCK" করতে হবে।

// ইনস্ট্রুমেন্টেড ইউনিট টেস্টিং

androidTestCompile('com.android.support.test:runner:0.5', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

এখন আমরা এখানে অ্যান্ড্রয়েড টেস্টকম্পাইল দেখতে পাচ্ছি, কারণ এবার আমরা পরীক্ষার জন্য ডিভাইস বা এমুলেটরটি ব্যবহার করার ইচ্ছা করি, সেটি হচ্ছে ইনস্ট্রুমেন্টেশন পরীক্ষা। বেটারের স্পষ্টতার জন্য আমি বিকাশকারী.অ্যান্ড্রয়েড.কম থেকে পড়ার পরামর্শ দেব


0

জেভিএম টেস্টিং বা ইউনিট পরীক্ষার জন্য নির্ভরতা যুক্ত করতে (যারা কেবল জাভা পরিবেশের উপর নির্ভর করে তাদের পরীক্ষা করে, আমাদের কোনও অ্যান্ড্রয়েড পরিবেশ প্রয়োজন হয় না)।

আমরা টেস্টকম্পাইল নির্দেশিকা ব্যবহার করি। উদাহরণ:

dependencies {
    testCompile gradleTestKit()
}

ইনস্ট্রুমেন্টেশন পরীক্ষার জন্য নির্ভরতা যুক্ত করতে (যারা পরীক্ষাগুলি মূলত অ্যান্ড্রয়েড পরিবেশের উপর নির্ভর করে) আমরা androidTestCompileনির্দেশিকাটি ব্যবহার করি ।

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