ভিজ্যুয়াল স্টুডিও একটি স্বয়ংক্রিয়ভাবে উত্পাদিত অ্যাক্সেসর শ্রেণীর মাধ্যমে ব্যক্তিগত পদ্ধতির ইউনিট পরীক্ষার অনুমতি দেয়। আমি একটি ব্যক্তিগত পদ্ধতির একটি পরীক্ষা লিখেছি যা সফলভাবে সংকলন করে তবে এটি রানটাইমে ব্যর্থ হয়। কোড এবং পরীক্ষার মোটামুটি ন্যূনতম সংস্করণ হ'ল:
//in project MyProj
class TypeA
{
private List<TypeB> myList = new List<TypeB>();
private class TypeB
{
public TypeB()
{
}
}
public TypeA()
{
}
private void MyFunc()
{
//processing of myList that changes state of instance
}
}
//in project TestMyProj
public void MyFuncTest()
{
TypeA_Accessor target = new TypeA_Accessor();
//following line is the one that throws exception
target.myList.Add(new TypeA_Accessor.TypeB());
target.MyFunc();
//check changed state of target
}
রানটাইম ত্রুটিটি হ'ল:
Object of type System.Collections.Generic.List`1[MyProj.TypeA.TypeA_Accessor+TypeB]' cannot be converted to type 'System.Collections.Generic.List`1[MyProj.TypeA.TypeA+TypeB]'.
ইন্টেলিজেন্স অনুসারে - এবং তাই আমি সংকলকটি অনুমান করি - লক্ষ্য টাইপ টাইপএ_এ্যাকসেসরের। তবে রানটাইমের সময় এটি টাইপ এ টাইপ করে এবং তাই তালিকার যোগে ব্যর্থ হয়।
আমি এই ত্রুটি বন্ধ করতে পারে কোন উপায় আছে? অথবা, সম্ভবত আরও সম্ভবত, অন্যান্য ব্যক্তিদের কী পরামর্শ রয়েছে (আমার সম্ভবত ভবিষ্যদ্বাণী রয়েছে "ব্যক্তিগত পদ্ধতি পরীক্ষা করবেন না" এবং "ইউনিটের পরীক্ষাগুলি বস্তুগুলির স্থিতিটি পরিচালনা করে না")।