Como testar métodos privados em BDD / TDD?

Eu estou tentando programar de acordo com Behavior Driven Development, que afirma que nenhuma linha de código deve ser escrita sem escrever primeiro o teste de unidade com falha.

Minha pergunta é, como usar o BDD com métodos privados?
Como posso testar métodos privados?
Existe melhor solução do que:
- tornar os métodos privados públicos primeiro e depois torná-los privados quando eu escrevo um método público que usa esses métodos privados;
ou
- em C #, tornando todos os métodos privados internos e usando o atributo InternalsVisibleTo.

questionAnswers(11)

yourAnswerToTheQuestion