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, и, следовательно, сбой добавления списка.
Есть ли способ остановить эту ошибку? Или, возможно, более вероятно, какие другие советы есть у других людей (я предсказываю, может быть, "не тестировать частные методы" и "не имеют модульных тестов, управляющих состоянием объектов" ).