আমি যদি আপনার প্রশ্নের অভিপ্রায় অনুমান করি তবে আমি বলব:
- আপনি প্রকৃত কাজ করে এমন ব্যক্তিগত নির্মাণকারীদের জন্য যুক্তিসঙ্গত চেকগুলি চান এবং এবং
- আপনি ক্লোজারটি ব্যবহার শ্রেণীর জন্য খালি নির্মাণকারীদের বাদ দিতে চান।
1 এর জন্য, এটি সুস্পষ্ট যে আপনি চান সমস্ত সূচনা কারখানার পদ্ধতিগুলির মাধ্যমে করা হোক। এই জাতীয় ক্ষেত্রে, আপনার পরীক্ষাগুলি কনস্ট্রাক্টরের পার্শ্ব প্রতিক্রিয়াগুলি পরীক্ষা করতে সক্ষম হওয়া উচিত। এটি সাধারণ ব্যক্তিগত পদ্ধতি পরীক্ষার বিভাগের আওতায় আসা উচিত। পদ্ধতিগুলি আরও ছোট করুন যাতে তারা কেবলমাত্র সীমিত সংখ্যক নির্ধারিত জিনিস (আদর্শভাবে কেবল একটি জিনিস এবং একটি জিনিস ভালভাবে) করে এবং তারপরে তাদের উপর নির্ভরশীল পদ্ধতিগুলি পরীক্ষা করে।
উদাহরণস্বরূপ, যদি আমার [বেসরকারী] কনস্ট্রাক্টর আমার ক্লাসের উদাহরণ ক্ষেত্রগুলিতে সেট আপ a
করে 5
। তারপরে আমি এটি পরীক্ষা করতে পারি (বা বরং অবশ্যই):
@Test
public void testInit() {
MyClass myObj = MyClass.newInstance(); //Or whatever factory method you put
Assert.assertEquals(5, myObj.getA()); //Or if getA() is private then test some other property/method that relies on a being 5
}
2 এর জন্য, যদি আপনার কাছে ইউটিল ক্লাসগুলির জন্য নামকরণের একটি সেট থাকে তবে আপনি ইউটিলি নির্মাণকারীদের বাদ দিতে ক্লোভারটি কনফিগার করতে পারেন। উদাহরণস্বরূপ, আমার নিজের প্রকল্পে আমি এই জাতীয় কিছু ব্যবহার করি (কারণ আমরা কনভেনশনটি অনুসরণ করি যে সমস্ত উটিল শ্রেণীর নাম ব্যবহারের সাথে শেষ হওয়া উচিত):
<clover-setup initString="${build.dir}/clovercoverage.db" enabled="${with.clover}">
<methodContext name="prvtCtor" regexp="^private *[a-zA-Z0-9_$]+Util *( *) *"/>
</clover-setup>
আমি ইচ্ছাকৃতভাবে .*
নিম্নলিখিতটি বাদ দিয়েছি )
কারণ এই ধরনের নির্মাতারা ব্যতিক্রম ছুঁড়ে ফেলার উদ্দেশ্যে নয় (তারা কিছু করার জন্য নয়)।
অবশ্যই একটি তৃতীয় কেস হতে পারে যেখানে আপনি একটি অ-ইউটিলিটি ক্লাসের জন্য খালি কনস্ট্রাক্টর রাখতে চাইতে পারেন। এই ধরনের ক্ষেত্রে, আমি আপনাকে পরামর্শ দেব যে আপনি methodContext
নির্মাণকারীর সঠিক স্বাক্ষর সহ একটি রাখুন ।
<clover-setup initString="${build.dir}/clovercoverage.db" enabled="${with.clover}">
<methodContext name="prvtCtor" regexp="^private *[a-zA-Z0-9_$]+Util *( *) *"/>
<methodContext name="myExceptionalClassCtor" regexp="^private MyExceptionalClass()$"/>
</clover-setup>
আপনার যদি এমন অনেক ব্যতিক্রমী ক্লাস থাকে তবে আপনি সাধারণী বেসরকারী নির্মাতা রেজি-প্রাইসকে প্রস্তাবিত পরিবর্তন করতে এবং Util
এটি থেকে অপসারণ করতে পারেন। এই ক্ষেত্রে, আপনাকে ম্যানুয়ালি নিশ্চিত করতে হবে যে আপনার নির্মাণকারীর পার্শ্ব প্রতিক্রিয়াগুলি এখনও আপনার শ্রেণি / প্রকল্পের অন্যান্য পদ্ধতি দ্বারা পরীক্ষা করা হয়েছে এবং আচ্ছাদিত।
<clover-setup initString="${build.dir}/clovercoverage.db" enabled="${with.clover}">
<methodContext name="prvtCtor" regexp="^private *[a-zA-Z0-9_$]+ *( *) .*"/>
</clover-setup>