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)
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.
>
>
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)
> 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
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
> 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
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
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
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
> 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