Eu tenho uma classe base com uma boa quantidade de "meta programação" para dar a flexibilidade / abstração necessária para ser bastante genérica.
Eu tenho muitas subclasses usando os métodos comuns na classe base e tenho testes de unidade orientados a comportamento que cobrem todos os casos em cada subclasse.
É possível pular o teste da classe base?
unit-testing
testing
Nathan
fonte
fonte
Respostas:
Para verificar se você possui testes suficientes ou não, verifique a cobertura do código e a cobertura da ramificação induzida pelos testes (talvez usando uma ferramenta de cobertura, talvez manualmente revendo os caminhos do código ou usando um depurador).
Se você chegar à conclusão de que os testes para as subclasses oferecem uma cobertura alta o suficiente para o código das classes base, então adicionar testes adicionais obviamente não trará muitos benefícios. Por outro lado, se houver caminhos de código que você só pode testar adicionando testes específicos usando a classe base diretamente, você deve seguir esta rota.
Outro motivo possível para "testar sua classe base diretamente" é que você deseja testar uma função específica dessa classe "isoladamente". Às vezes, pode ser mais fácil projetar casos de teste diretamente para um método específico, em vez de apenas testar esse método indiretamente, chamando os métodos de suas subclasses que usam esse método.
Note que quando você tem uma classe base genérica para que o cenário de uso típico é para derivar uma subclasse, a sua classe base é provavelmente abstrato. Portanto, para testar essa classe, você precisa fazer uma derivação de qualquer maneira. Para essa situação, testar "a classe base diretamente" pode significar adicionar uma derivação especial apenas para fins de teste, é claro.
fonte
Temos testes para nos tornar mais produtivos e reduzir o número de "problemas" que os clientes reclamam.
Portanto, considerando que você tem testes de unidade orientados ao comportamento, cobrindo todos os casos em cada subclasse, não há benefício para o cliente que também está testando a classe base diretamente. Isso pode ser confirmado alterando algum código na classe base e ver se um teste falha, por exemplo, separar uma linha de código ou adicionar um "não" a uma "se". (Apenas verificar se todas as linhas de código estão cobertas pelos testes não é bom o suficiente.)
Ficamos então perguntando se o teste o tornaria mais produtivo . Isso pode acontecer de algumas maneiras.
Portanto, como as subclasses estão funcionando, não vejo sentido em escrever testes diretos para a classe base. Não é o dia de hoje, que não haveria benefícios em escrever esses testes logo no início.
fonte