Estou criando testes com JUnit e JMock e minha dúvida é:
Todos os parâmetros do meu sistema sempre devem receber uma Interface (código 2) e não uma classe? Pois se o parâmeto b tiver que ser um mock, não tenho como fazer isso com o código 1. Isso citando somente os benefícios referentes a testes; quanto aos outros nem se fala, pois vejo que são enormes.
Trabalhar sempre com interface como parâmetros; isso é uma realidade no dia-a-dia de vocês ou é um ideal a ser atingido? Ou na maioria das empresas e sistemas, se você já conseguir criar algum teste para o sistema, já pode levantar as mãos para o céu? :? Infelizmente estou nessa última ainda!
//código 1. Ao invés disso:
void metodoA(ClasseB b) {
...
}
//código 2. Sempre fazer isso:
void metodoA(InterfaceB b) {
...
}
ASOBrasil