Quando é apropriado ignorar o encapsulamento em testes de unidade?

Recentemente, tomei conhecimento deCaixa branca de powermock funcionalidade. (Em resumo, ele permite testar diretamente métodos privados ou modificar membros privados diretamente de testes de unidade - mantendo-os privados!)

Eu sei que existem alguns quadros de pensamento que desaprovam o teste de unidade, exceto métodos visíveis, mas, droga, às vezes você só quer um teste simples para garantir que um método auxiliar de nível profundo esteja fazendo o que deveria fazer ... sem analisando o que poderia ser uma sobrecarga enorme para preparar os parâmetros e as zombarias necessários para os métodos-pai se filtrarem para o seu método ... e então você precisa fazer mágica para extrair os resultados desse método interno. Em resumo, em algum momento testar esses métodos internos requer os testes de unidade mais complexos e difíceis de seguir. (E, fyi, nossa empresa tem uma política de 100% de cobertura de teste de unidade.Esses métodos devem ser testados!)

Estou ciente de queuma metodologia émudança acessadores de método para permitir testes de unidade (por exemplo, alteração deprivate paraprotected, mas o powermock Whitebox permite um teste direto sem alterar o código-fonte.

Mesmo assim, Mamma sempre dizia: "Só porque você pode, não significa que deveria".

É sempre apropriado testar métodos internos como este? Em caso afirmativo, qual é a regra geral que devo usar?

questionAnswers(1)

yourAnswerToTheQuestion