Sono piuttosto un principiante nel test del codice, ed era una assertputtana prima. Una cosa che mi preoccupa nei test unitari è che spesso è necessario che tu faccia public(o almeno internal) campi che privatealtrimenti sarebbero stati , per sbloccarli readonly, invece fare privatemetodi protected virtual, ecc ...
Recentemente ho scoperto che puoi evitarlo usando cose come la classe PrivateObject per accedere a qualsiasi cosa in un oggetto tramite la riflessione. Ma questo rende i tuoi test meno gestibili (le cose falliranno durante l'esecuzione piuttosto che in fase di compilazione, verrà interrotta da una semplice ridenominazione, è più difficile eseguire il debug ...). Qual è la tua opinione su questo ? Quali sono le migliori pratiche nei test unitari riguardanti le restrizioni di accesso?
modifica: considera ad esempio che hai una classe con una cache in un file su disco e nei tuoi test vuoi invece scrivere in memoria.