Si el método que está probando modifica el estado interno de su objeto, no hay otra forma de verificarlo. Debe recurrir a llamar a un método de acceso en su prueba unitaria.
Aún así, esto no debería ser algo que estás haciendo en cada prueba. Aunque es bueno agrupar datos con los métodos que operan en ellos en OOP, esas operaciones deberían ser realmente simples.
La mayor parte de la lógica de su aplicación debe estar separada de sus cambios de estado. Las pruebas unitarias son más efectivas en unidades que se comportan funcionalmente. Eso significa que no confían en el estado administrado, no causan efectos secundarios y devuelven un valor basado únicamente en los argumentos que reciben.
- ¿Qué es JBoss?
- ¿Cuál es mejor, SVN o Git?
- ¿Está bien que un ingeniero senior con 7 años de experiencia trabaje continuamente en un campo técnico durante 3 años más?
- ¿Cuánto tiempo por día debo pasar aprendiendo C (mi primer lenguaje de programación)?
- ¿Cuáles son algunos consejos para organizar un hackathon internacional?
Es posible que pueda lograr esto extrayendo utilidades de sus objetos para mover la lógica que está tratando de probar en otro lugar. O también podría extraer un objeto de estado, que podría tropezarse o burlarse en sus pruebas unitarias.
Al final, su pregunta no se trata realmente de escribir mejores pruebas. Se trata de escribir código más comprobable.