আমার টেস্ট স্যুটে একটি পরীক্ষা রয়েছে যা এরকম কিছু হয়:
[Fact]
public void VerifySomeStuff()
{
var stuffCollection = GetSomeStuff();
Assert.Equal(1, stuffCollection.Count());
}
এই পরীক্ষাটি আমার প্রত্যাশার মতোই কাজ করে, তবে আমি যখন এটি চালাচ্ছি তখন xUnit একটি সতর্কতা প্রিন্ট করে:
সতর্কতা xUnit2013: সংগ্রহ আকারের জন্য চেক করতে Assert.Equal () ব্যবহার করবেন না।
তবে, সতর্কবাণীতে কোনও বিকল্প প্রস্তাব দেওয়া হয়নি, এবং একটি গুগল অনুসন্ধান আমাকে xUnit এর উত্স কোডে এই পরীক্ষার জন্য পরীক্ষা করে যা এই সতর্কতাটি মুদ্রিত হয়েছে তা নিয়ে যায়।
যদি Assert.Equal()
কোনও সংগ্রহের দৈর্ঘ্য যাচাই করার সঠিক উপায় না হয় তবে কী?
স্পষ্ট করার জন্য: আমি বুঝতে পেরেছি যে আমি উদাহরণস্বরূপ একটি ভেরিয়েবল বের করে বা এর Assert.True(stuff.Count() == 1)
পরিবর্তে ব্যবহার করে এই সতর্কতাটি নির্গমন না করার জন্য "কৌশল" করতে পারি । পূর্ববর্তীটি কেবল হ্যাকি, এবং পূর্ববর্তীটির মনে হয় যে যদি xUnit উদাহরণস্বরূপ কোনওটির একাধিক পুনরাবৃত্তি এড়াতে চেষ্টা করা হয় IEnumerable<T>
, তবে এটি যাওয়ার ভুল উপায় (কারণ আমি কোনও সমস্যা হলে আলাদাভাবে এটি সম্পর্কে সংকলক ইঙ্গিতগুলি পেয়ে যাব), এবং xUnit নিজেই কখনই ইনপুট একাধিকবার মূল্যায়ন করতে হবে না (বাস্তবে এটি ভেরিয়েবল এক্সট্রাকশন নির্বিশেষে একই ইনপুটটি পাবেন, কারণ সি # ফাংশন কলিং কীভাবে কাজ করে)।
সুতরাং, আমি কেবল আমার আউটপুট থেকে সেই সতর্কতা অপসারণ করতে আগ্রহী নই। আমার প্রশ্নের উত্তরে এটিও ব্যাখ্যা করা হয় কেন সেই সতর্কতাটি প্রথম স্থানে লাইব্রেরিতে অন্তর্ভুক্ত করা হয় এবং কেন তার পরিবর্তে আমার যে পদ্ধতি ব্যবহার করা উচিত তা ভাল।
stuffCollection.Count()
একটি পৃথক ভেরিয়েবল সঞ্চয় করে থাকেন এবং তা দৃ to়তার সাথে পাস করেন এটি কি আপনাকে একই ত্রুটি দেয়?