Visual Studio обеспечивает модульное тестирование частных методов с помощью автоматически сгенерированного класса доступа. Я написал тест частного метода, который успешно компилируется, но он не работает во время выполнения. Довольно минимальная версия кода и тест: < /p>
//in project MyProj
class TypeA
{
private List myList = new List();
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
}
< /code>
Ошибка времени выполнения: < /p>
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]'.
< /code>
Согласно Intellisense - и, следовательно, я думаю, компилятор - цель имеет тип typea_accessor. Но во время выполнения это типа типа типа, и, следовательно, список добавленных сбоев. Или, может быть, более вероятно, какие другие советы дают другие люди (я предсказываю, может быть, «не тестируйте частные методы» и «нет модульных тестов, манипулирующих состоянием объектов»).
Подробнее здесь: https://stackoverflow.com/questions/912 ... in-c-sharp