Visual Studio อนุญาตให้ทดสอบหน่วยวิธีการส่วนตัวผ่านคลาส accessor ที่สร้างขึ้นโดยอัตโนมัติ ฉันได้เขียนการทดสอบของวิธีการส่วนตัวที่รวบรวมเรียบร้อยแล้ว แต่ล้มเหลวขณะใช้งานจริง โค้ดในเวอร์ชันที่ค่อนข้างน้อยและการทดสอบคือ:
//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 แต่ ณ รันไทม์มันเป็นประเภท TypeA และด้วยเหตุนี้รายการเพิ่มล้มเหลว
มีวิธีใดที่ฉันสามารถหยุดข้อผิดพลาดนี้ได้บ้าง หรืออาจเป็นไปได้มากกว่าที่คำแนะนำอื่น ๆ ที่คนอื่นมี (ฉันคาดเดาว่าอาจ "ไม่ทดสอบวิธีการส่วนตัว" และ "ไม่มีการทดสอบหน่วยจัดการกับสถานะของวัตถุ")