টিডিডি অনুসরণ করলে অনিবার্যভাবে ডিআইই বাড়ে?


14

আমি একই সাথে টেস্ট ড্রাইভেন ডেভলপমেন্ট (টিডিডি), ডিপেন্ডেন্সি ইনজেকশন (ডিআই) এবং ইনভার্সন অফ কন্ট্রোল (আইওসি) করতে শিখেছি। আমি যখন টিডিডি ব্যবহার করে কোড লিখি তখন আমি সবসময় আমার ক্লাসের নির্মাতাদের ডিআই ব্যবহার করে শেষ করি। আমি ভাবছিলাম যে এটি কীভাবে টিডিডি করতে শিখেছি, বা এটি যদি টিডিডির প্রাকৃতিক পার্শ্ব-প্রতিক্রিয়া হয় if

সুতরাং আমার প্রশ্নটি হ'ল: টিডিডি প্রিন্সিপালগুলি এবং লিখন ইউনিটের পরীক্ষাগুলি যা বাহ্যিক পরিষেবাদির উপর নির্ভর করে না তা অনিবার্যভাবে ডিআই এর দিকে পরিচালিত করে?


8
আমি ইউনিট পরীক্ষার আর্ট পড়ছি এবং মনে হচ্ছে এটি অবশ্যই নির্ভরতা ইনজেকশন (ডিআই) এর দিকে নিয়ে যায়।
প্রোগ্রামার

2
সুতরাং এটি কোন ভাষা সম্পর্কে? জাভাতে ডিআই / ইত্যাদি প্রয়োজনীয়, তবে এটি ভাষার সীমাবদ্ধতার কারণে - পাইথনের মতো ভাষার এটির প্রয়োজন হয় না কারণ তারা পরীক্ষাগুলিতে প্যাচ নির্ভরতা বানর করতে পারে।
ইজকাটা

@ ইজকাটা: আমি সম্মত হই যে ডিআই একটি ভাষার সীমাবদ্ধতার জন্য কার্যকর; তবে বানরের সাথে পাঠানো কম অনমনীয় ভাষায় একই জিনিস নয়। অন্যান্য উপায়ে আমি প্রথম শ্রেণীর ফাংশনগুলিকে প্রাধান্য দেব, যা আপনাকে ডিআই অনুশাসনের দ্বারা প্রাকৃতিকভাবে করতে প্রাকৃতিকভাবে অনুমতি দেয়।
জাভিয়ের

উত্তর:


19

ডাটাবেস বা বাহ্যিক পরিষেবার উপর নির্ভর করে না এমন টিডিডি এবং লেখার ইউনিট পরীক্ষাগুলি ডিআইআই-এ অনিবার্যভাবে পরিচালিত করে?

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


9

ডিআই সম্পর্কে ইতিমধ্যে জানে এমন ব্যক্তিদের জন্য, তবে কেবল কখনও বিষয়টিটি দেখেনি, আমি মনে করি ইউনিট পরীক্ষার ফলে প্রায় ডিআইআই ব্যবহার করা যায় using

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


8

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

http://stephenwalther.com/archive/2009/04/11/tdd-tests-are-not-unit-tests.aspx

পার্থক্য ব্যাখ্যা জন্য।


1
"টিডিডিটি ইউটি নয়" এর জন্য +1। এছাড়াও স্বীকৃতি দেওয়ার জন্য যে চূড়ান্ত নিরপেক্ষতা টিটিডির নয় (প্রয়োজনীয়ভাবে) ইউটি-র একটি সাধারণ ফলাফল।
জাভিয়ের

3

হ্যাঁ এবং না: টিডিডি সু-কাঠামোগত কোড লেখার দিকে পরিচালিত করে, যা নিজেই ডিআই এর দিকে পরিচালিত করে।

এর মাধ্যমে আমার অর্থ টিডিডি সাধারণত এনপ্যাপুলেশন, এসআরপি এবং পুনঃব্যবহারযোগ্যতার সাথে আপনাকে সঠিকভাবে প্রেরণ করে। এটি কেবল আপনার কোডের চারপাশে কিছু পরীক্ষা নেওয়ার বিষয় নয়: এটি আরও ভাল ডিজাইন তৈরির জন্য এই পরীক্ষাগুলি ব্যবহার করার বিষয়ে। যদি কোনও বস্তু তার নিজস্ব নির্ভরতা তৈরি করে, তবে এটি একটি নির্দিষ্ট অ্যাপ্লিকেশনের মধ্যে একটি নির্দিষ্ট প্রসঙ্গের মধ্যে বসবাস করছে এবং সম্ভবত অ্যাপ্লিকেশনটিকে আরও বড় ডিগ্রীতে বোনা হবে। ডিআই একটি ভাল জিনিস, কেবলমাত্র পরীক্ষার দৃষ্টিকোণ থেকে নয়, কোডের মানের দিক থেকেও।


আপনি আপনার হ্যাঁ এবং কোনও উত্তরের কোন অংশ পরিষ্কার করতে পারেন? একজন ডিআই ছাড়া কীভাবে টিডিডি করে।
গিলস

'না' অংশ হওয়ায় আমি এটি টিডিডি এবং ডিআইয়ের মধ্যে একটি সরাসরি যোগসূত্র মনে করি না। এটি কোড মানের মাধ্যমে অপ্রত্যক্ষ। যা সম্ভবত কেশকে বিভক্ত করছে, তবে কেবল ভেবেছিলাম যে কোডের মানটি কেবলমাত্র পরীক্ষার যোগ্যতা নয়, আপনি লক্ষ্য করছেন।
টিম

0

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

যেমন "টিডিডি অনিবার্যভাবে ডিআই এর দিকে পরিচালিত করে" এটি অবশ্যই তা করে না। ইউনিট টেস্টগুলি লেখার সময় যা দরকার তা হ'ল ইউনিটটিকে তার বাহ্যিক নির্ভরতার বাস্তবায়ন থেকে পরীক্ষা করে পৃথক করা । এবং এটি ডিআই সহ বা ছাড়া খুব সহজেই করা যায়। সবচেয়ে ভাল উপায়, সম্ভবত, একটি সঠিক বিচ্ছিন্নতা / উপহাসের সরঞ্জাম ব্যবহার করা।


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