C #: Мокинг и тестирование защищенных (или частных) методов в запечатанных классах - подходы

У меня есть запечатанный класс с защищенными методами, поведение которых я хочу протестировать. Это затрудняет непосредственное тестирование и затрудняет имитацию.

Это кодовая база, которая не была разработана в стиле TDD, и сейчас я добавляю модульные тесты для конкретных функций.

Какие общие подходы возможны в этом случае? На данный момент у меня есть:

  1. Распечатать класс. Затем создайте прокси или адаптер, производный от класса в нашем тестовом коде, для туннелирования доступа к защищенному методу.
  2. Вынесите поведение в защищенном методе за пределы делегата / функтора и повторно внедрите его. Затем независимо протестируйте выделенное поведение.
  3. Проверьте, вызвав ближайший общедоступный метод в иерархии наследования, который использует защищенный метод. Потенциально приводит к множеству насмешек и подверженности риску, когда код, отличный от тестируемого, изменяется - создавая хрупкие тесты.
  4. Используйте отражение, чтобы получить доступ к защищенному методу. DateTime dateEnd; TimeSpan ts = dateEnt - dateStart; Печать: ... Год (а) и ... Месяц (а) как это вычислить? .net framework 2.0 проект c # asp.net.
    DateTime dayStart;
    DateTime dateEnd;
    
    TimeSpan ts = dateEnt - dateStart;
    

    Печать: ... Год (а) и ... Месяц (а)

    как я могу это вычислить?

    .net framework 2.0
    c #

    проект asp.net.

7
задан Rup 20 January 2011 в 14:55
поделиться