quarta-feira, 5 de dezembro de 2007

JMock versus Classes Concretas

O JMock (acho que o EasyMock também) precisa de uma interface para ser instanciado, mas eu precisei usar com uma Classe Concreta.

Sei que a primeira idéia é: "Porque você não cria uma interface?"

No meu caso, até poderia, mas imagine um sistema legado, onde você esteja mantendo, criar uma interface e alterar um monte de classes talvez não seja o ideal.

E isso me motivou a procurar uma solução para este problema, no site do JMock, encontrei uma referencia ao CGLib (links abaixo):

http://www.jmock.org/jmock1-cglib.html
http://www.jmock.org/mocking-classes.html


algumas horas depois...

Nas soluções acima, me parece que só funciona com o JMock 2, e aí vem a notícia mais triste que tive desde que comecei a fazer testes:

Os testes feitos com JMock 1 não rodam se eu mudar o jar do JMock para a versão 2.

Indo no site (http://www.jmock.org/versioning.html) vi isso:


2.0.0 Incompatible API changes, removes API elements deprecated by version 1.2.0.


Bem, pra quem usa JMock 1 e não quer re-fazer TODOS os seus testes, crie uma interface para a classe que será mockada.

O JMock acaba de perder 5 pontos.