JUnit e JMock

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

Sim. Na verdade isso segue a boa pratica de programar orientado a interface, não a implementação. Se vc trabalha baseado em interfaces, vc vai ter ela como parametro, mas pode passar qualquer implementação na hora de executar.
Não conheço o JMock, ja usei o MockObejcts e era bem mais facil trabalhar usando interfaces. Como tinhamos programado baseado em interaces não tivemos problemas em mockar isso na hora dos testes.
Da uma pesuisada, talves tenha como fazer.

[]'s