¿Cómo realizar pruebas unitarias de métodos privados en BDD / TDD?

Estoy tratando de programar de acuerdo con Behavior Driven Development, que establece que no se debe escribir ninguna línea de código sin escribir primero la prueba de la unidad que falla.

Mi pregunta es, ¿cómo usar BDD con métodos privados?
¿Cómo puedo hacer una prueba unitaria de los métodos privados?
¿Hay mejor solución que:
- Hacer públicos primero los métodos privados y luego volverlos privados cuando escribo un método público que utiliza esos métodos privados.
o
- en C # haciendo todos los métodos privados internos y usando el atributo InternalsVisibleTo.

Respuestas a la pregunta(11)

Su respuesta a la pregunta