2016-09-25 5 views
2

Я много искал эту проблему, но не получил никаких проблем, как я и ищу, наконец задав вопрос.Внутренний статический класс содержит закрытый класс. Как создать объект частного класса для модульного тестирования с использованием подделок microsoft

Я использую подделки microsoft, чтобы протестировать приведенный ниже код C#.

Я застрял в ситуации, когда у меня есть ниже класс, чтобы проверить

internal static class IntStaticClass 
{ 

    //some code 

    private class PvtClass 
    { 
     public string Create(Obj1 o1, Obj2 o2) 
     { 

     //some code 

     } 
    } 
} 

Теперь я хочу, чтобы проверить метод создания.

Однако PrivateObject или PrivateType не в состоянии найти TYPEOF (MyPrivateClass)

Пожалуйста, помогите мне, как я могу создать объект PvtClass и вызвать метод создания для тестирования.

Заранее спасибо.

ответ

3

Вы можете получить ссылку на внешний класс с помощью Assembly.GetType() метода, а оттуда внутренний класс можно получить по Type.GetNestedTypes(BindingFlags.NonPublic)

наименее болезненный способом, чтобы получить ссылку на сборку является typeof( некоторыми общественным классом в том, что сборка ).Assembly.

+0

Большое спасибо Джошуа за быструю помощь. Попробуй это сейчас. –

1

Большая тонна благодарения Джошуа. Наконец решил проблему. Приветствия.

Я написал ниже код для создания экземпляра внутреннего частного класса & выполнить его метод.

  var type = typeof(IntStaticClass); 
      var types = type.GetNestedTypes(BindingFlags.NonPublic); 
      MethodInfo methodInfo = types[0].GetMethod("Create"); 
      object classInstance = System.Activator.CreateInstance(types[0], null); 
      object[] parametersArray = new object[2] { new Obj1(), new Obj2() }; 
      var result = methodInfo.Invoke(classInstance, parametersArray); 

Теперь можно проверить метод. Приветствия.

 Смежные вопросы

  • Нет связанных вопросов^_^