আমি একই উত্তরটির সন্ধান করছিলাম এবং এই সময়ে xUnit ডকুমেন্টেশন ক্লাস ফিক্সার এবং কালেকশন ফিক্সারগুলি কীভাবে প্রয়োগ করতে পারে সে সম্পর্কে শ্রোতাগুলিতে খুব সহায়ক, যা বিকাশকারীদের ক্লাস বা শ্রেণীর স্তরের গ্রুপে সেটআপ / টিয়ারডাউন কার্যকারিতা বিস্তৃত করে। এটি গির স্যাগবার্গের উত্তরের সাথে সামঞ্জস্যপূর্ণ এবং এটি কাকে দেখতে ভাল হবে তা বোঝাতে ভাল কঙ্কালের বাস্তবায়ন দেয়।
https://xunit.github.io/docs/shared-context.html
সংগ্রহের ফিক্সচার কখন ব্যবহার করবেন: আপনি যখন একক পরীক্ষার প্রসঙ্গ তৈরি করতে চান এবং বেশ কয়েকটি পরীক্ষার ক্লাসে পরীক্ষার মধ্যে ভাগ করে নিতে চান এবং পরীক্ষার ক্লাসগুলির সমস্ত পরীক্ষা শেষ হওয়ার পরে এটি পরিষ্কার হয়ে যান।
কখনও কখনও আপনি একাধিক পরীক্ষার ক্লাসগুলির মধ্যে ফিক্সচার অবজেক্টটি ভাগ করতে চান। ক্লাস ফিক্সচারগুলির জন্য ব্যবহৃত ডাটাবেস উদাহরণটি একটি দুর্দান্ত উদাহরণ: আপনি পরীক্ষার ডেটার একটি সেট সহ একটি ডাটাবেস সূচনা করতে চাইতে পারেন এবং তারপরে সেই পরীক্ষার ডেটা একাধিক পরীক্ষার ক্লাস দ্বারা ব্যবহারের জন্য রেখে যেতে পারেন। আপনি বিভিন্ন পরীক্ষার ক্লাসে পরীক্ষার মধ্যে একটি একক বস্তু ভাগ করে নিতে xUnit.net এর সংগ্রহ ফিক্সচার বৈশিষ্ট্যটি ব্যবহার করতে পারেন।
সংগ্রহের ফিক্সচারগুলি ব্যবহার করতে, আপনাকে নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করতে হবে:
ফিক্সচার ক্লাস তৈরি করুন এবং ফিক্সচার ক্লাস কনস্ট্রাক্টরের স্টার্টআপ কোডটি দিন। যদি ফিক্সচার ক্লাসটি ক্লিনআপ করার প্রয়োজন হয় তবে ফিক্সচার ক্লাসে আইডিস্পোজেবল বাস্তবায়ন করুন এবং ক্লিনআপ কোডটি ডিসপোজ () পদ্ধতিতে রেখে দিন। সংগ্রহ সংজ্ঞা ক্লাস তৈরি করুন, এটি [কালেকশন ডেফিনিশন] অ্যাট্রিবিউট দিয়ে সজ্জিত করুন, এটি একটি অনন্য নাম দিয়ে যা পরীক্ষার সংগ্রহটি সনাক্ত করবে। সংগ্রহ সংজ্ঞা শ্রেণিতে আইকোলিকেশনফাইচার <> যুক্ত করুন। পরীক্ষার সংজ্ঞা বিভাগের [কালেকশন ডেফিনিশন] বৈশিষ্ট্যটিতে আপনি সরবরাহ করেছেন এমন অনন্য নাম ব্যবহার করে, সমস্ত পরীক্ষার শ্রেণিতে [সংগ্রহ] বৈশিষ্ট্য যুক্ত করুন যা সংগ্রহের অংশ হবে। যদি পরীক্ষার ক্লাসগুলিতে ফিক্সচারের দৃষ্টান্ত অ্যাক্সেসের প্রয়োজন হয় তবে এটি নির্মাণকারী যুক্তি হিসাবে যুক্ত করুন এবং এটি স্বয়ংক্রিয়ভাবে সরবরাহ করা হবে। এখানে একটি সহজ উদাহরণ:
public class DatabaseFixture : IDisposable
{
public DatabaseFixture()
{
Db = new SqlConnection("MyConnectionString");
}
public void Dispose()
{
}
public SqlConnection Db { get; private set; }
}
[CollectionDefinition("Database collection")]
public class DatabaseCollection : ICollectionFixture<DatabaseFixture>
{
}
[Collection("Database collection")]
public class DatabaseTestClass1
{
DatabaseFixture fixture;
public DatabaseTestClass1(DatabaseFixture fixture)
{
this.fixture = fixture;
}
}
[Collection("Database collection")]
public class DatabaseTestClass2
{
}
xUnit.net সংগ্রহের ফিক্সারগুলিকে ক্লাস ফিক্সারের মতোই আচরণ করে, ব্যতীত সংগ্রহের স্থির বস্তুটির আয়ু দীর্ঘায়িত: সংগ্রহের কোনও পরীক্ষার ক্লাসে কোনও পরীক্ষা চালানোর আগে এটি তৈরি করা হয়েছিল, এবং পরিষ্কার করা হবে না it সংগ্রহের সমস্ত পরীক্ষার ক্লাস চলমান শেষ না হওয়া পর্যন্ত।
পরীক্ষার সংগ্রহগুলি আইক্লাস ফিকচার <> দিয়েও সজ্জিত করা যায়। xUnit.net এটি পরীক্ষা করে যেমন পরীক্ষার প্রতিটি স্বতন্ত্র পরীক্ষার ক্লাস ক্লাস ফিক্সের সাথে সজ্জিত থাকে।
পরীক্ষার সংগ্রহগুলি xUnit.net সমান্তরালভাবে চালানোর সময় পরীক্ষা চালানোর পথেও প্রভাব ফেলে influence আরও তথ্যের জন্য, সমান্তরালে চলমান টেস্টগুলি দেখুন।
গুরুত্বপূর্ণ দ্রষ্টব্য: ফিক্সচারগুলি অবশ্যই পরীক্ষার মতো একই সমাবেশে থাকতে হবে।