Testes em DefaultStatus falham com Objenesis

13 views
Skip to first unread message

Otávio Scherer Garcia

unread,
Feb 4, 2011, 10:51:30 AM2/4/11
to caelum-vr...@googlegroups.com
Oi pessoal.

Brincando um pouco com os testes unit�rios notei que a classe DefaultStatusTest, que faz os testes
em DefaultStatus, falha quando uso o ObjenesisProxifier ao inv�s do DefaultProxifier.

Ocorre um NullPointerException ao invocar o m�todo shouldSetMovedPermanentlyStatusOfLogic. H� alguma
diferen�a no comportamento de DefaultProxifier e ObjenesisProxifier que possa causar um
NullPointerException?

java.lang.NullPointerException
at br.com.caelum.vraptor.view.DefaultStatus.fixLocation(DefaultStatus.java:120)
at br.com.caelum.vraptor.view.DefaultStatus.movedPermanentlyTo(DefaultStatus.java:113)
at br.com.caelum.vraptor.view.DefaultStatus$1.intercept(DefaultStatus.java:130)
at br.com.caelum.vraptor.proxy.AbstractCglibProxifier$2.intercept(AbstractCglibProxifier.java:56)
at
br.com.caelum.vraptor.view.DefaultStatusTest$Resource$$EnhancerByCGLIB$$9aa86cd2.method(<generated>)
at
br.com.caelum.vraptor.view.DefaultStatusTest.shouldSetMovedPermanentlyStatusOfLogic(DefaultStatusTest.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)


Paulo Silveira - Caelum

unread,
Feb 4, 2011, 10:52:43 AM2/4/11
to caelum-vr...@googlegroups.com
Oi Otavio

precisa realmente isolar isso e fazer o comportamento dos dois ser o mesmo....

--
Paulo Silveira
Caelum | Ensino e Inovação
www.caelum.com.br


2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>:
> Oi pessoal.
>
> Brincando um pouco com os testes unitários notei que a classe DefaultStatusTest, que faz os testes
> em DefaultStatus, falha quando uso o ObjenesisProxifier ao invés do DefaultProxifier.
>
> Ocorre um NullPointerException ao invocar o método shouldSetMovedPermanentlyStatusOfLogic. Há alguma
> diferença no comportamento de DefaultProxifier e ObjenesisProxifier que possa causar um


> NullPointerException?
>
> java.lang.NullPointerException
>        at br.com.caelum.vraptor.view.DefaultStatus.fixLocation(DefaultStatus.java:120)
>        at br.com.caelum.vraptor.view.DefaultStatus.movedPermanentlyTo(DefaultStatus.java:113)
>        at br.com.caelum.vraptor.view.DefaultStatus$1.intercept(DefaultStatus.java:130)
>        at br.com.caelum.vraptor.proxy.AbstractCglibProxifier$2.intercept(AbstractCglibProxifier.java:56)
>        at
> br.com.caelum.vraptor.view.DefaultStatusTest$Resource$$EnhancerByCGLIB$$9aa86cd2.method(<generated>)
>        at
> br.com.caelum.vraptor.view.DefaultStatusTest.shouldSetMovedPermanentlyStatusOfLogic(DefaultStatusTest.java:117)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>
>
>
>
>

> --
> You received this message because you are subscribed to the Google Groups "caelum-vraptor-dev" group.
> To post to this group, send email to caelum-vr...@googlegroups.com.
> To unsubscribe from this group, send email to caelum-vraptor-...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/caelum-vraptor-dev?hl=en.
>
>

Lucas Cavalcanti

unread,
Feb 4, 2011, 10:54:34 AM2/4/11
to caelum-vr...@googlegroups.com
o default proxifier passa null para todos os parâmetros do construtor, já o objenesis rouba e não chama o construtor da classe,
se eu não me engano.

2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>
Oi pessoal.

Brincando um pouco com os testes unitários notei que a classe DefaultStatusTest, que faz os testes
em DefaultStatus, falha quando uso o ObjenesisProxifier ao invés do DefaultProxifier.

Ocorre um NullPointerException ao invocar o método shouldSetMovedPermanentlyStatusOfLogic. Há alguma
diferença no comportamento de DefaultProxifier e ObjenesisProxifier que possa causar um

NullPointerException?

java.lang.NullPointerException
       at br.com.caelum.vraptor.view.DefaultStatus.fixLocation(DefaultStatus.java:120)
       at br.com.caelum.vraptor.view.DefaultStatus.movedPermanentlyTo(DefaultStatus.java:113)
       at br.com.caelum.vraptor.view.DefaultStatus$1.intercept(DefaultStatus.java:130)
       at br.com.caelum.vraptor.proxy.AbstractCglibProxifier$2.intercept(AbstractCglibProxifier.java:56)
       at
br.com.caelum.vraptor.view.DefaultStatusTest$Resource$$EnhancerByCGLIB$$9aa86cd2.method(<generated>)
       at
br.com.caelum.vraptor.view.DefaultStatusTest.shouldSetMovedPermanentlyStatusOfLogic(DefaultStatusTest.java:117)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
       at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
       at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

Otávio Scherer Garcia

unread,
Feb 4, 2011, 11:30:55 AM2/4/11
to caelum-vr...@googlegroups.com
O nulo est� na chamada de String uri = router.urlFor(controller, method, args), onde o retorno de
URI � nulo. Como router � um mock, ser� que pode ser algo com o router e n�o com o Proxifier?

> o default proxifier passa null para todos os par�metros do construtor, j� o
> objenesis rouba e n�o chama o construtor da classe,
> se eu n�o me engano.
>
> 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>:
> > Oi pessoal.
> >
> > Brincando um pouco com os testes unit�rios notei que a classe DefaultStatusTest, que faz os
> > testes em DefaultStatus, falha quando uso o ObjenesisProxifier ao inv�s do DefaultProxifier.


> >
> > Ocorre um NullPointerException ao invocar o m�todo shouldSetMovedPermanentlyStatusOfLogic. H�

> > alguma diferen�a no comportamento de DefaultProxifier e ObjenesisProxifier que possa causar um

Lucas Cavalcanti

unread,
Feb 4, 2011, 11:33:56 AM2/4/11
to caelum-vr...@googlegroups.com
NullPointerExecption at:
DefaultStatus.fixLocation(DefaultStatus.java:120)

if (location.startsWith("/")) {


ou seja, o problema é essa uri ser nula mesmo

2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>
O nulo está na chamada de String uri = router.urlFor(controller, method, args), onde o retorno de
URI é nulo.  Como router é um mock, será que pode ser algo com o router e não com o Proxifier?

> o default proxifier passa null para todos os parâmetros do construtor, já o
> objenesis rouba e não chama o construtor da classe,
> se eu não me engano.
>
> 2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>:
> > Oi pessoal.
> >
> > Brincando um pouco com os testes unitários notei que a classe DefaultStatusTest, que faz os
> > testes em DefaultStatus, falha quando uso o ObjenesisProxifier ao invés do DefaultProxifier.

> >
> > Ocorre um NullPointerException ao invocar o método shouldSetMovedPermanentlyStatusOfLogic. Há
> > alguma diferença no comportamento de DefaultProxifier e ObjenesisProxifier que possa causar um

Otávio Scherer Garcia

unread,
Feb 4, 2011, 11:36:24 AM2/4/11
to caelum-vr...@googlegroups.com
Sim, mas o fato da URI vir nula pode ter a ver com o router?

> NullPointerExecption at:
> DefaultStatus.fixLocation(DefaultStatus.java:120)
>
> if (location.startsWith("/")) {
>
>

> ou seja, o problema � essa uri ser nula mesmo
>
> 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>
>
> > O nulo est� na chamada de String uri = router.urlFor(controller, method,


> > args), onde o retorno de

> > URI � nulo. Como router � um mock, ser� que pode ser algo com o router e


> > n�o com o Proxifier?
> >
> > > o default proxifier passa null para todos os par�metros do construtor, j�
> > o
> > > objenesis rouba e n�o chama o construtor da classe,
> > > se eu n�o me engano.
> > >

> > > 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>:
> > > > Oi pessoal.
> > > >
> > > > Brincando um pouco com os testes unit�rios notei que a classe
> > DefaultStatusTest, que faz os
> > > > testes em DefaultStatus, falha quando uso o ObjenesisProxifier ao inv�s
> > do DefaultProxifier.
> > > >


> > > > Ocorre um NullPointerException ao invocar o m�todo
> > shouldSetMovedPermanentlyStatusOfLogic. H�

> > > > alguma diferen�a no comportamento de DefaultProxifier e

> caelum-vraptor-...@googlegroups.com<caelum-vraptor-dev%2Bunsu...@googlegroups.com>
> > > > . For more options, visit this group at


> > http://groups.google.com/group/caelum-vraptor-dev?hl=en.
> > > >
> > > >
> > >
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > "caelum-vraptor-dev"
> > > group. To post to this group, send email to
> > caelum-vr...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> >
> >

> caelum-vraptor-...@googlegroups.com<caelum-vraptor-dev%2Bunsu...@googlegroups.com>
> > > . For more options, visit this group at


> > http://groups.google.com/group/caelum-vraptor-dev?hl=en.
> > >
> >
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "caelum-vraptor-dev" group.
> > To post to this group, send email to caelum-vr...@googlegroups.com.
> > To unsubscribe from this group, send email to
> >
> >

> caelum-vraptor-...@googlegroups.com<caelum-vraptor-dev%2Bunsu...@googlegroups.com>
> > . For more options, visit this group at

Lucas Cavalcanti

unread,
Feb 4, 2011, 11:45:30 AM2/4/11
to caelum-vr...@googlegroups.com
se o router é um mock do mockito, o padrão é retornar null sempre


2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>
Sim, mas o fato da URI vir nula pode ter a ver com o router?

> NullPointerExecption at:
> DefaultStatus.fixLocation(DefaultStatus.java:120)
>
> if (location.startsWith("/")) {
>
>
> ou seja, o problema é essa uri ser nula mesmo
>
> 2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>
>
> > O nulo está na chamada de String uri = router.urlFor(controller, method,

> > args), onde o retorno de
> > URI é nulo.  Como router é um mock, será que pode ser algo com o router e

> > não com o Proxifier?
> >
> > > o default proxifier passa null para todos os parâmetros do construtor, já
> > o
> > > objenesis rouba e não chama o construtor da classe,
> > > se eu não me engano.
> > >
> > > 2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>:
> > > > Oi pessoal.
> > > >
> > > > Brincando um pouco com os testes unitários notei que a classe
> > DefaultStatusTest, que faz os
> > > > testes em DefaultStatus, falha quando uso o ObjenesisProxifier ao invés
> > do DefaultProxifier.
> > > >

> > > > Ocorre um NullPointerException ao invocar o método
> > shouldSetMovedPermanentlyStatusOfLogic. Há
> > > > alguma diferença no comportamento de DefaultProxifier e

Otávio Scherer Garcia

unread,
Feb 4, 2011, 11:51:27 AM2/4/11
to caelum-vr...@googlegroups.com
Tem uma regra aqui para o mock:

when(router.urlFor(eq(Resource.class), eq(Resource.class.getDeclaredMethod("method")),
any(Object[].class))).thenReturn("/resource/method");

Assim ele deveria retornar /resource/method. Fiz uns testes para ver se est�o batendo o
Resource.class e o Resource.class.method, assim como o args[], e est� tudo ok.

Vou fazer mais uns testes e ver qual a diferen�a entre ambos. Talvez o fa�o do objenesis fazer um
by-pass no construtor cause esse erro. Rodando todos os testes unit�rios, somente esse falha, todos
os outros passam OK no junit.

> se o router � um mock do mockito, o padr�o � retornar null sempre
>
>
> 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>


>
> > Sim, mas o fato da URI vir nula pode ter a ver com o router?
> >
> > > NullPointerExecption at:
> > > DefaultStatus.fixLocation(DefaultStatus.java:120)
> > >
> > > if (location.startsWith("/")) {
> > >
> > >

> > > ou seja, o problema � essa uri ser nula mesmo
> > >
> > > 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>
> > >
> > > > O nulo est� na chamada de String uri = router.urlFor(controller,


> > method,
> > > > args), onde o retorno de

> > > > URI � nulo. Como router � um mock, ser� que pode ser algo com o router
> > e


> > > > n�o com o Proxifier?
> > > >
> > > > > o default proxifier passa null para todos os par�metros do
> > construtor, j�
> > > > o
> > > > > objenesis rouba e n�o chama o construtor da classe,
> > > > > se eu n�o me engano.
> > > > >

> > > > > 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>:
> > > > > > Oi pessoal.
> > > > > >
> > > > > > Brincando um pouco com os testes unit�rios notei que a classe


> > > > DefaultStatusTest, que faz os
> > > > > > testes em DefaultStatus, falha quando uso o ObjenesisProxifier ao

> > inv�s
> > > > do DefaultProxifier.
> > > > > >


> > > > > > Ocorre um NullPointerException ao invocar o m�todo
> > > > shouldSetMovedPermanentlyStatusOfLogic. H�

> > > > > > alguma diferen�a no comportamento de DefaultProxifier e

> <caelum-vraptor-dev%2Bunsu...@googlegroups.com<caelum-vraptor-dev%252Bunsubscribe@googlegroups


> > .com> >
> > > > > > . For more options, visit this group at
> > > > http://groups.google.com/group/caelum-vraptor-dev?hl=en.
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "caelum-vraptor-dev"
> > > > > group. To post to this group, send email to
> > > > caelum-vr...@googlegroups.com.
> > > > > To unsubscribe from this group, send email to
> > > >
> > > >
> > >
> >
> caelum-vraptor-...@googlegroups.com<caelum-vraptor-dev%2Bunsu...@googlegroups.com>

> <caelum-vraptor-dev%2Bunsu...@googlegroups.com<caelum-vraptor-dev%252Bunsubscribe@googlegroups


> > .com> >
> > > > > . For more options, visit this group at
> > > > http://groups.google.com/group/caelum-vraptor-dev?hl=en.
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "caelum-vraptor-dev" group.
> > > > To post to this group, send email to
> > caelum-vr...@googlegroups.com.
> > > > To unsubscribe from this group, send email to
> > > >
> > > >
> > >
> >
> caelum-vraptor-...@googlegroups.com<caelum-vraptor-dev%2Bunsu...@googlegroups.com>

> <caelum-vraptor-dev%2Bunsu...@googlegroups.com<caelum-vraptor-dev%252Bunsubscribe@googlegroups

Lucas Cavalcanti

unread,
Feb 4, 2011, 11:56:58 AM2/4/11
to caelum-vr...@googlegroups.com
é que talvez não esteja passando Resource.class, e sim o Resource$EnhancedByCglib$aksdfas.class


2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>
Tem uma regra aqui para o mock:


when(router.urlFor(eq(Resource.class), eq(Resource.class.getDeclaredMethod("method")),
any(Object[].class))).thenReturn("/resource/method");

Assim ele deveria retornar /resource/method. Fiz uns testes para ver se estão batendo o
Resource.class e o Resource.class.method, assim como o args[], e está tudo ok.

Vou fazer mais uns testes e ver qual a diferença entre ambos. Talvez o faço do objenesis fazer um
by-pass no construtor cause esse erro. Rodando todos os testes unitários, somente esse falha, todos

os outros passam OK no junit.
> se o router é um mock do mockito, o padrão é retornar null sempre
>
>
> 2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>

>
> > Sim, mas o fato da URI vir nula pode ter a ver com o router?
> >
> > > NullPointerExecption at:
> > > DefaultStatus.fixLocation(DefaultStatus.java:120)
> > >
> > > if (location.startsWith("/")) {
> > >
> > >
> > > ou seja, o problema é essa uri ser nula mesmo
> > >
> > > 2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>
> > >
> > > > O nulo está na chamada de String uri = router.urlFor(controller,

> > method,
> > > > args), onde o retorno de
> > > > URI é nulo.  Como router é um mock, será que pode ser algo com o router
> > e

> > > > não com o Proxifier?
> > > >
> > > > > o default proxifier passa null para todos os parâmetros do
> > construtor, já
> > > > o
> > > > > objenesis rouba e não chama o construtor da classe,
> > > > > se eu não me engano.
> > > > >
> > > > > 2011/2/4 Otávio Scherer Garcia <ota...@otavio.com.br>:
> > > > > > Oi pessoal.
> > > > > >
> > > > > > Brincando um pouco com os testes unitários notei que a classe

> > > > DefaultStatusTest, que faz os
> > > > > > testes em DefaultStatus, falha quando uso o ObjenesisProxifier ao
> > invés
> > > > do DefaultProxifier.
> > > > > >

> > > > > > Ocorre um NullPointerException ao invocar o método
> > > > shouldSetMovedPermanentlyStatusOfLogic. Há
> > > > > > alguma diferença no comportamento de DefaultProxifier e

Otávio Scherer Garcia

unread,
Feb 7, 2011, 8:15:14 PM2/7/11
to caelum-vr...@googlegroups.com
Oi pessoal.

Fiz uns testes bem intensos e notei que o problema não é com o Objenesis, mas sim com os proxies. O padrão do DefaultProxifier é usar JDK Proxy quando interface, então tudo funciona bem. Porém quando uso Javassist ou Cglib não funciona, dá esse NullPointerException.

Otávio Scherer Garcia

unread,
Feb 7, 2011, 8:24:02 PM2/7/11
to caelum-vr...@googlegroups.com
Resolvido.

Ao invés de usar

when(router.urlFor(eq(Resource.class), eq(method), any(Object[].class)).thenReturn("/resource/method");

eu usei assim

when(router.urlFor(eq(Resource.class), eq(method), new Object[] { }).thenReturn("/resource/method");

E funcionou tanto com Javassist, quando cglib e JDK proxy.

:)

Lucas Cavalcanti

unread,
Feb 7, 2011, 9:31:50 PM2/7/11
to caelum-vr...@googlegroups.com
estranho... router é um spy?

2011/2/7 Otávio Scherer Garcia <ota...@otavio.com.br>

Otávio Scherer Garcia

unread,
Feb 8, 2011, 6:10:32 AM2/8/11
to caelum-vr...@googlegroups.com
Lucas, o teste falhava na classe DefaultStatusTest, método shouldSetMovedPermanentlyStatusOfLogic.

Route é um simples mock anotado com @Mock. Pelo que notei any(Object[].class) não é a mesma coisa que new Object[0] quando estamos usando proxies. Apenas no caso do JDK Proxy. Conheço pouco o mockito para poder dizer a razão disso.

Lucas Cavalcanti

unread,
Feb 8, 2011, 8:10:19 AM2/8/11
to caelum-vr...@googlegroups.com
o problema é que é um varargs...

null  é ambíguo para varargs, por isso o erro, provavelment... passar new Object[0] e não passar nada
seria a mesma coisa...

no mockito tem um anyVarargs() que vc pode usar, justamente pra evitar esse problema

[]'s

2011/2/8 Otávio Scherer Garcia <ota...@otavio.com.br>

Otávio Scherer Garcia

unread,
Feb 8, 2011, 8:56:27 AM2/8/11
to caelum-vr...@googlegroups.com
Feito. Com anyVarargs() o teste passou OK.

> o problema � que � um varargs...
>
> null � amb�guo para varargs, por isso o erro, provavelment... passar new
> Object[0] e n�o passar nada


> seria a mesma coisa...
>
> no mockito tem um anyVarargs() que vc pode usar, justamente pra evitar esse
> problema
>
> []'s
>

> 2011/2/8 Ot�vio Scherer Garcia <ota...@otavio.com.br>
>
> > Lucas, o teste falhava na classe DefaultStatusTest, m�todo
> > shouldSetMovedPermanentlyStatusOfLogic.
> >
> > Route � um simples mock anotado com @Mock. Pelo que notei any(Object[].class)
> > n�o � a mesma coisa que new Object[0] quando estamos usando proxies.
> > Apenas no caso do JDK Proxy. Conhe�o pouco o mockito para poder dizer a
> > raz�o disso.


> >
> >
> > On 02/08/2011 12:31 AM, Lucas Cavalcanti wrote:
> >

> > estranho... router � um spy?
> >
> > 2011/2/7 Ot�vio Scherer Garcia <ota...@otavio.com.br>
> >
> >> Resolvido.
> >>
> >> Ao inv�s de usar


> >>
> >> when(router.urlFor(eq(Resource.class), eq(method),
> >> any(Object[].class)).thenReturn("/resource/method");
> >>
> >> eu usei assim
> >>
> >> when(router.urlFor(eq(Resource.class), eq(method), new Object[] {
> >> }).thenReturn("/resource/method");
> >>
> >> E funcionou tanto com Javassist, quando cglib e JDK proxy.
> >>
> >> :)
> >>
> >>
> >> On 02/07/2011 11:15 PM, Ot�vio Scherer Garcia wrote:
> >>
> >> Oi pessoal.
> >>

> >> Fiz uns testes bem intensos e notei que o problema n�o � com o Objenesis,
> >> mas sim com os proxies. O padr�o do DefaultProxifier � usar JDK Proxy quando
> >> interface, ent�o tudo funciona bem. Por�m quando uso Javassist ou Cglib n�o
> >> funciona, d� esse NullPointerException.


> >>
> >>
> >> On 02/04/2011 02:56 PM, Lucas Cavalcanti wrote:
> >>

> >> � que talvez n�o esteja passando Resource.class, e sim o
> >> Resource$EnhancedByCglib$aksdfas.class
> >>
> >>
> >> 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>


> >>
> >>> Tem uma regra aqui para o mock:
> >>>
> >>> when(router.urlFor(eq(Resource.class),
> >>> eq(Resource.class.getDeclaredMethod("method")),
> >>> any(Object[].class))).thenReturn("/resource/method");
> >>>
> >>> Assim ele deveria retornar /resource/method. Fiz uns testes para ver se

> >>> est�o batendo o
> >>> Resource.class e o Resource.class.method, assim como o args[], e est�
> >>> tudo ok.
> >>>


> >>> Vou fazer mais uns testes e ver qual a diferen�a entre ambos. Talvez o

> >>> fa�o do objenesis fazer um
> >>> by-pass no construtor cause esse erro. Rodando todos os testes unit�rios,


> >>> somente esse falha, todos
> >>> os outros passam OK no junit.
> >>>

> >>> > se o router � um mock do mockito, o padr�o � retornar null sempre
> >>> >
> >>> >

> >>> > 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>


> >>> >
> >>> > > Sim, mas o fato da URI vir nula pode ter a ver com o router?
> >>> > >
> >>> > > > NullPointerExecption at:
> >>> > > > DefaultStatus.fixLocation(DefaultStatus.java:120)
> >>> > > >
> >>> > > > if (location.startsWith("/")) {
> >>> > > >
> >>> > > >

> >>> > > > ou seja, o problema � essa uri ser nula mesmo
> >>> > > >
> >>> > > > 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>
> >>> > > >
> >>> > > > > O nulo est� na chamada de String uri = router.urlFor(controller,


> >>> > > method,
> >>> > > > > args), onde o retorno de

> >>> > > > > URI � nulo. Como router � um mock, ser� que pode ser algo com o
> >>> router
> >>> > > e


> >>> > > > > n�o com o Proxifier?
> >>> > > > >
> >>> > > > > > o default proxifier passa null para todos os par�metros do
> >>> > > construtor, j�
> >>> > > > > o
> >>> > > > > > objenesis rouba e n�o chama o construtor da classe,
> >>> > > > > > se eu n�o me engano.
> >>> > > > > >

> >>> > > > > > 2011/2/4 Ot�vio Scherer Garcia <ota...@otavio.com.br>:
> >>> > > > > > > Oi pessoal.
> >>> > > > > > >
> >>> > > > > > > Brincando um pouco com os testes unit�rios notei que a classe


> >>> > > > > DefaultStatusTest, que faz os
> >>> > > > > > > testes em DefaultStatus, falha quando uso o
> >>> ObjenesisProxifier ao

> >>> > > inv�s
> >>> > > > > do DefaultProxifier.
> >>> > > > > > >


> >>> > > > > > > Ocorre um NullPointerException ao invocar o m�todo
> >>> > > > > shouldSetMovedPermanentlyStatusOfLogic. H�

> >>> > > > > > > alguma diferen�a no comportamento de DefaultProxifier e

Reply all
Reply to author
Forward
0 new messages