c# - ভিএস ২০১7। নেট স্ট্যান্ডার্ড লাইব্রেরিতে অভ্যন্তরীণ পদ্ধতিগুলির ইউনিট পরীক্ষা করা




unit-testing visual-studio-2017 (3)

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

আমার মনে আছে আপনি ভিএস ২০১৫ এর সমস্ত লাইন এসেম্বলিআইএন.পি. ক্লাস করতে পারতেন যা নির্দিষ্ট প্রকল্পগুলিকে অভ্যন্তরীণ পদ্ধতিগুলি দেখতে সক্ষম করবে

[assembly:InternalsVisibleTo("MyTests")]

যেহেতু ভিএস ২০১7-তে কোনও এসেম্বলিআইএনফোস ক্লাস নেই। নেট স্ট্যান্ডার্ড প্রকল্পগুলি আমি ভাবছিলাম যে আপনি এখনও অভ্যন্তরীণ পদ্ধতিতে পরীক্ষা করতে পারবেন?


"ইন্টার্নালভিজিবলটো" বৈশিষ্ট্যটি কোনওভাবেই "হোয়াইট-বক্স" (দশকের শব্দটি, আমি অনুমান করি)। নেট এর পরীক্ষার জন্য কী key এটি সম্মুখের "সমাবেশ" বৈশিষ্ট্য সহ যে কোনও সি # ফাইলে স্থাপন করা যেতে পারে। নোট করুন যে এমএস ডোকস বলেছেন যে সমাবেশের নামটি অবশ্যই স্বাক্ষরিত হলে জনসাধারণের কী টোকেন দ্বারা যোগ্যতা অর্জন করতে হবে। কখনও কখনও এটি কাজ করে না এবং একটিকে অবশ্যই তার স্থানে সম্পূর্ণ পাবলিক কী ব্যবহার করতে হবে। ইন্টারনালগুলিতে অ্যাক্সেস সমবর্তী সিস্টেমগুলি পরীক্ষা করার এবং অন্যান্য অনেক পরিস্থিতিতে চাবিকাঠি। https://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054 দেখুন। এই বইয়ে, মেসারোস বিভিন্ন কোডিং শৈলীর বর্ণনা দিয়েছেন যা মূলত প্রোগ্রামের বিকাশের জন্য "টেস্টের জন্য ডিজাইন" পদ্ধতির গঠন করে। কমপক্ষে আমি বছরের পর বছর ধরে এটি ব্যবহার করেছি।


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

আপনি আপনার টার্গেট প্রকল্পে একটি পরীক্ষার হুক শিপিংয়ের কাজ শেষ করার পরে এটি 'আদর্শ' নয়। তবে ডায়গনিস্টিক বন্দরগুলির সাথে আধুনিক নির্ভরযোগ্য গাড়ি জাহাজ এবং একটি জেটিএইচ সংযোগ সহ আধুনিক নির্ভরযোগ্য ইলেকট্রনিক্স জাহাজ বিবেচনা করুন। তবে ডায়াগনস্টিক পোর্টটি ব্যবহার করে কেউ তাদের গাড়ি চালানোর পক্ষে যথেষ্ট বোকা।


InternalsVisibleToAttribute জন্য নেট ডক্স অনুসারে:

বৈশিষ্ট্যটি সমাবেশ স্তরে প্রয়োগ করা হয়। এর অর্থ এটি একটি উত্স কোড ফাইলের শুরুতে অন্তর্ভুক্ত করা যেতে পারে, বা এটি ভিজ্যুয়াল স্টুডিও প্রকল্পে એસেম্বলিআইএনফো ফাইলটিতে অন্তর্ভুক্ত করা যেতে পারে।

অন্য কথায়, আপনি কেবল এটি নিজের নিজের ইচ্ছামত নামে .cs ফাইলের মধ্যে স্থাপন করতে পারেন এবং এটি ঠিকঠাক কাজ করা উচিত:

// some .cs file included in your project
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleTo("MyTests")]





.net-standard