Модульное тестирование защищенного статического нового метода в C # - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь написать класс-оболочку для защищенного метода, который я хотел бы протестировать.Проблема в моем случае заключается в том, что оригинальный метод объявлен как protected static new, что не позволяет мне получить доступ к базовому методу, потому что он статический.

Есть ли другой способ написать этот метод-обертку?Если нет, какие другие варианты мне нужно выполнить модульное тестирование этого метода без изменения его области действия?

РЕДАКТИРОВАТЬ: Код добавлен:

public class DerivedClassToTest : BaseClass
{
    protected static new Type_A MehodeToTest()
    {
        Type_A A = new Type_A
        {
            //DoSomething...
        };
        return A;
    }
}

Как мне проверить MehodeToTest ?

Я пытался извлечь из DerivedClassToTest в моем Unitest, чтобы я мог получить доступ к Защищенному методу, но его статическому, поэтому я не могу вызвать base.MethodeToTest .Как получить доступ к MethodeToTest

Спасибо.

Ответы [ 2 ]

5 голосов
/ 30 января 2012

Вы можете написать обертку в вашем модульном тестовом проекте, чтобы выставить метод:

public class DerivedClassToTestWrapper : DerivedClassToTest
{
    public static Type_A MehodeToTestWrapped()
    {
        return DerivedClassToTest.MehodeToTest();
    }
}

, а затем в своем модульном тесте:

var actual = DerivedClassToTestWrapper.MehodeToTestWrapped();

Также я не совсем уверен, чтоцелью разработки было использование protected static new для члена, но я должен признаться, что я никогда не видел таких модификаторов доступа для члена.

1 голос
/ 30 января 2012

Ваш подход хорош, однако квалификатор base работает только с методами экземпляра.Вы можете получить доступ к методу статического теста, как и к любому другому статическому методу:

public class HelperClassToAccessMethodeToTest : DerivedClassToTest
{
       public static Type_A MehodeToTestWrapped()        
       {            
           return DerivedClassToTest.MehodeToTest();        
       }  
}

FWIW, я думаю, вы идете по правильному пути, чтобы «разблокировать» устаревший код для тестирования таким способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...