Estou há dias nesse problema e gostaria de saber se alguem sabe me ajudar. Estou montando um servidor socket assíncrono (tcp e com vários clientes) e estou usando junit para teste unitário de todo meu sistema. Mas, não tenho encontrado tutoriais nem ninguém que consiga me ajudar em como fazer esses testes no server. Estou usando Grizzly.
A princípio criei uma conexao para cada teste mas percebi que por serem criadas várias threads (o Grizzly faz isso) os testes não tem efeito nenhum.
Alguém já fez isso ou sabe me ajudar?
Você pode encapular a parte de recepção e envio do seu socket, e criar um mock para o que estará do outro lado da conexão. Assim vc poderá configurar exatamente o que quer que o outro lado envie ou responda a cada mensagem.
D
dalilaserpa
Oi ViniGodoy!
Obrigada pela resposta.
Bom, eu não criei um mock mas eu estou simulando o cliente com uma conexão local (usando a conexão cliente de exemplo do Grizzly). Você já chegou a usar o Grizzly? Não sei se implementei da maneira correta, mas da forma como estou tendo resposta no teste, tenho a impressão de que ele não está assíncrono. Está respondendo comandos de difentes clientes como se estivesse se comunicando com um único cliente.
Acabo de realizar mais testes e debugs, e neste momento, não sei se meu problema é na implementação do Grizzly ou se é do teste.
Nunca usei o Grizzly. Fazia as conexões diretamente.
A vantagem do Mock é justamente não precisar abrir uma conexão, e poder simular exatamente o comportamento do cliente, inclusive comportamentos incorretos.
Assim você não impõe qualquer limite no número de threads que o JUnit venha a abrir.
D
dalilaserpa
Oi ViniGodoy,
Bom, vou pensar na idéia do mock.
Aproveitando, você chegou a testar algum framework para conexoes socket? Faz as conexões diretamente por algum motivo?
Obrigada.
ViniGodoy
O servidor ao qual conectava usava um protocolo proprietário.