Graças à forma como as classes para a API Servlet foram criadas, elas são completamente inúteis para qualquer coisa, exceto para compilar. Se você tentar simular as interfaces, poderá acabar com o seguinte:
Absent Code attribute in method that is not native or abstract in class file javax/servlet/http/Cookie
Suas opções são:
1. Depende de uma implementação real de Servlets, não da API
2. Implemente os mocks você mesmo
O primeiro significa que você está testando o comportamento específico de terceiros e provavelmente acaba jogando um jarro de 50 MB
O último significa que você tem dezenas de métodos para implementar e não recebe nenhuma sutileza como a contagem de invocação do EasyMock.
Ambos são péssimos.
Usei a segunda abordagem, da seguinte maneira
Autogenerate MockHttpServletRequest, implementando HttpServletRequest e adicione o seguinte método
private void crapOut() {
final StackTraceElement[] ste = Thread.currentThread().getStackTrace();
String methodName = ste[2].getMethodName();
throw new UnsupportedOperationException("Unimplemented method:" + methodName);
}
Faça com que cada método na simulação chame esse método e retorne null / false / -1 / qualquer que seja
Em seguida, use os mocks no lugar de instâncias reais. Cada método chamado pelo código em teste irá falhar graças a crapOut (). Sempre que você ver uma dessas falhas, implemente o método com falha e tente novamente