विजुअल स्टूडियो स्वचालित रूप से उत्पन्न एक्सेसर क्लास के माध्यम से निजी तरीकों के यूनिट परीक्षण की अनुमति देता है। मैंने एक निजी पद्धति का एक परीक्षण लिखा है जो सफलतापूर्वक संकलित करता है, लेकिन यह रनटाइम में विफल रहता है। कोड और परीक्षण का एक काफी न्यूनतम संस्करण है:
//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]'.
Intellisense के अनुसार - और इसलिए मुझे लगता है कि कंपाइलर - टारगेट TypeA_Accessor का है। लेकिन रनटाइम में यह टाइपो का होता है, और इसलिए सूची जोड़ने में विफल रहता है।
क्या इस त्रुटि को रोकने का कोई तरीका है? या, शायद अधिक संभावना है, अन्य लोगों के पास क्या सलाह है (मुझे लगता है कि शायद "निजी तरीकों का परीक्षण न करें" और "यूनिट परीक्षण नहीं है वस्तुओं की स्थिति में हेरफेर")।