সিস্টেমের অধীনে টেস্টের বাইরে ক্লাসটি বের করার সময় আমার ইউনিট পরীক্ষাগুলি রিফ্যাক্টর করা উচিত?


13

আমি এই শ্রেণিটি লিখেছিলাম যা কয়েকটি কাজ করে (সম্ভবত এটি একক দায়িত্বের নীতি লঙ্ঘন)। আমি বুঝতে পেরেছি যে প্রকল্পের অন্য কোনও অংশে সেই যুক্তিটির একটি অংশ প্রয়োজন এবং আমি যেভাবে এটি প্রকাশ করতে চলেছি তা হল আমার মূল সিস্টেমের অধীনে পরীক্ষার বাইরে একটি শ্রেণি বের করা।

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

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

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

আমি টিডিডিতে নতুন তাই আমি একটি বিশেষজ্ঞের পরামর্শ চাই। ধন্যবাদ!

উত্তর:


7

"ইয়ান কুপার: টিডিডি, এটি কোথায় ভুল হয়েছে" এই আশ্চর্যজনক আলোচনাটি দেখার পরে , আমি @ পিডিআর এর সাথে একমত নই। আমি মনে করি আপনার কেবল আসল পরীক্ষা রাখা উচিত। কোনও পরীক্ষা না ভাঙা, লেখাই বা পরিবর্তন না করে পরীক্ষার অধীনে আপনার সিস্টেমকে রিপ্যাক্টর করার ক্ষমতা প্রথম স্থানে পরীক্ষা লেখার পুরো উদ্দেশ্য।

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


6

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

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

পুরানো পরীক্ষাগুলিতে যা কিছু বাকী রয়েছে তা কেস-কেস-কেস ভিত্তিতে নেওয়া উচিত, তবে বেশিরভাগ ক্ষেত্রে সেগুলি নতুন কাঠামোর মধ্যে আবার লেখা উচিত।

আপনি ঠিক বলেই, আপনি কোনও রক্ষণাবেক্ষণের দুঃস্বপ্ন নিয়ে বামে যেতে চান না। তবে আপনি আগের চেয়ে কম পথ-কভারেজ চান না।


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

1
@ টিটিওয়াইটি: সেখানে আপনাকে না দেখেই উত্তর দেওয়া শক্ত। কখনও কখনও টিডিডি তার কাজের চেয়ে বেশি কাজের মতো মনে হয়। অন্য সময়, আপনি কেন বিরক্ত করেছিলেন তা আপনাকে মনে করিয়ে দেওয়া হবে। এবং অন্যান্য সময়, এটি আপনি এটি আরও শক্ত করে তুলছেন। পার্থক্যটি বলতে শেখা টিডিডিতে ভাল হওয়ার একটি বড় অংশ।
পিডিআর

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

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