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?
setAccessibleo que pode ser bloqueada por algum costume SecurityManager