Модульное тестирование частных методов в C#C#

Место общения программистов C#
Ответить
Anonymous
 Модульное тестирование частных методов в C#

Сообщение Anonymous »

Visual Studio позволяет модульное тестирование частных методов с помощью автоматически создаваемого класса доступа. Я написал тест частного метода, который успешно компилируется, но завершается с ошибкой во время выполнения. Достаточно минимальная версия кода и теста:

Код: Выделить всё

//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
}
Ошибка выполнения:

Код: Выделить всё

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, и, следовательно, добавление списка завершается неудачей.

Можно ли как-нибудь устранить эту ошибку? Или, что более вероятно, какие еще советы могут дать другие люди (я предсказываю, что, возможно, «не тестируйте частные методы» и «не позволяйте модульным тестам манипулировать состоянием объектов»).

Подробнее здесь: https://stackoverflow.com/questions/912 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»