Recentemente, observei que a adição de [TestInitialize] a um método protegido em um assembly .NET não era respeitada, mas se eu tornasse o método público, ele seria chamado pelo executor de teste de unidade (Resharper neste caso). Eu notei isso várias vezes no passado com métodos de teste.
Tecnicamente falando, é tão fácil refletir sobre um método privado quanto um método público. De fato, a reflexão é um método empregado para testar métodos particulares.
Então, por que preciso tornar públicos todos os meus métodos de teste de unidade?
.net
unit-testing
Justin Dearing
fonte
fonte
setAccessible
o que pode ser bloqueada por algum costume SecurityManagerRespostas:
Você deve testar o que a classe faz , não como ela faz.
No que diz respeito ao "Mundo Exterior", é isso que a classe disponibiliza Publicamente; sua estrutura de teste está fazendo a mesma suposição.
Ao testar algo "menos" que Público, você está investigando a implementação interna da classe, o que é uma Má Idéia.
fonte
Como regra geral, é melhor acessar apenas métodos públicos - quando você cria uma classe, também cria o contrato para o qual outras classes devem acessar seu código. Portanto, a resposta provavelmente é apenas porque é uma convenção.
fonte