Testando componentes com dependências externas

Olá,
gostaria de saber uma boa maneira de fazer testes unitários em componentes que interagem com um outro componente distribuído( este último que tem a responsabilidade de ser um midlware para acesso ao banco de dados). Gostaria de saber, por exemplo, como uso o BD durante os testes. Devo criá-los previamente, dinâmicamente com dados aleatórios??? E em um servidor de integração???

O princípio básico é substituir no ambiente de teste unitário qualquer dependência externa ao componente sob teste por “mocks”. Em cada teste, o mock deve ser configurado para responder de maneira específica, de forma a cobrir não só os cenários principais de uso do componente como também os cenários de falha.

Por exemplo, se seu componente sob teste for um classe DAO, nos seus testes vc. teria uma conexão de banco de dados “mock” que lança uma exceção de falha de comunicação com o banco de dados quando utilizada. Usando esta conexão, vc. verifica se o comportamento do componente é o esperado, reconhecendo a exceção e dando o tratamento adequado à mesma.

Pesquise por “java mock library” e garanto que vc. vai achar um monte de coisas. Existem até servidores FTP “mock” para vc. testar clientes de transferência de dados.