Недавно я заметил, что добавление [TestInitialize] к защищенному методу в сборке .NET не было принято, но если я сделал метод общедоступным, он был вызван модулем модульного теста (в данном случае Resharper). Я заметил это несколько раз в прошлом с методами испытаний.
Технически говоря, такой же простой способ размышлять о частном методе, как и о публичном. На самом деле рефлексия - это метод, используемый для юнит-тестирования частных методов.
Итак, почему я должен сделать все мои методы модульного тестирования публичными?
.net
unit-testing
Джастин Даринг
источник
источник
setAccessible
что может быть заблокировано каким-либо пользовательским SecurityManagerОтветы:
Вы должны проверить, что делает класс, а не как он это делает.
Что касается «внешнего мира», то это то, что делает класс общедоступным; ваша среда тестирования делает то же самое.
Тестируя что-то «меньшее», чем Public, вы углубляетесь во внутреннюю реализацию класса, что является плохой идеей.
источник
Как правило, лучше всего иметь доступ только к открытым методам - когда вы создаете класс, вы также создаете контракт относительно того, какие другие классы должны обращаться к вашему коду. Таким образом, ответ, скорее всего, только потому, что это соглашение.
источник