O CGLIB foi descoberto quando procurávamos mockar classe concretas , ele é muito útil em muitas situações, principalmente quando usamos classes de outros. Acontece que esta semana descobrimos um probleminha nele: A classe que será mockada precisa do construtor default.
O interessante é que ele executa o construtor default quando o método mock(Class) é invocado. Isso pode ser um problema, no meu caso, a classe é de terceiro e não tem o construtor default, mas acredito que o CGLIB vai continuar sendo a alternativa pra esse tipo de situação.
Mostrando postagens com marcador Concrete Class. Mostrar todas as postagens
Mostrando postagens com marcador Concrete Class. Mostrar todas as postagens
quarta-feira, 7 de maio de 2008
quinta-feira, 6 de dezembro de 2007
JMock versus Classes Concretas 2 - A Missão
Me recuperando da decepção da incompatibilidade de versões do JMock, ví que o JMock 1 pode mockar classes concretas.
Baixei o jmock-cglib-version.jar, e fiz como diz no link abaixo:
http://www.jmock.org/jmock1-cglib.html
e funcionou.
A única limitação é que não pode ser uma classe final.
JMock acaba de recuperar seus pontos.
Thanks, Nat Pryce.
Baixei o jmock-cglib-version.jar, e fiz como diz no link abaixo:
http://www.jmock.org/jmock1-cglib.html
e funcionou.
A única limitação é que não pode ser uma classe final.
JMock acaba de recuperar seus pontos.
Thanks, Nat Pryce.
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.
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.
Assinar:
Postagens (Atom)