Eu sou um iniciante no teste de código e era uma assertprostituta antes. Uma coisa que me preocupa no teste de unidade é que, muitas vezes, é necessário que você crie public(ou pelo menos internal) campos que teriam sido de privateoutra forma, desuni- readonlylos, faça privatemétodos protected virtual, etc ...
Descobri recentemente que você pode evitar isso usando coisas como a classe PrivateObject para acessar qualquer coisa em um objeto por meio de reflexão. Mas isso torna seus testes menos sustentáveis (as coisas falham na execução, em vez do tempo de compilação, serão quebradas por uma simples renomeação, é mais difícil depurar ...). Qual a sua opinião sobre isso? Quais são as melhores práticas no teste de unidade relacionadas à restrição de acesso?
editar: considere, por exemplo, que você tem uma classe com um cache em um arquivo em disco e, em seus testes, deseja gravar na memória.