Você definitivamente deve cuidar da mesma forma, se não melhor, dos seus testes de unidade do que do seu código de produção em termos de qualidade e legibilidade. Os testes de unidade costumam ser a primeira coisa que você olha ao tentar entender o que algum código faz, e o leitor deve entender rapidamente o que está em jogo ao analisar o teste. Os testes de unidade também tendem a mudar muito e quebram muito se seu design não for robusto, o que meio que anula os benefícios de ter testes.
A violação da lei de Deméter é definitivamente um problema em seus testes de unidade por esse motivo, assim como em outros 2 que vêm à minha mente:
Se seus testes violam a Lei de Deméter nas seções Organizar ou Atuar , é provavelmente um sinal de que seu código de produção também o faz, já que seus testes de unidade são apenas mais um consumidor do seu código e provavelmente chamarão e operarão a classe sob teste da mesma forma. da maneira que qualquer outro código de produção faria.
Se seus testes violam a Lei de Demeter em suas seções Assert (ou seja, você verifica o valor de algo profundamente aninhado no gráfico de dependências do objeto em teste), pode ser que esses sejam realmente testes de integração em vez de testes de unidade. Em outras palavras, se no Teste A você afirmar que ABCD é igual a algo, pode ser que você esteja realmente tentando testar D e A em vez de apenas A.
A propósito, quando você diz
Eu quebro muitas vezes a Lei de Demeter, para escrever mais rápido e não usar tantas variáveis.
você deve estar ciente de que escrever
var grab = myDependency.Grab;
var something = grab.Something;
var very = something.Very;
very.Deep();
na verdade não é melhor Demeter sábio do que
myDependency.Grab.Something.Very.Deep();
se é isso que você quis dizer.