users@jersey.java.net

[Jersey] Re: Unit Testing with Spring

From: Paul Sandoz <Paul.Sandoz_at_oracle.com>
Date: Thu, 13 Jan 2011 10:05:20 +0100

On Jan 12, 2011, at 1:33 PM, Jonathan Cook - FM&T wrote:

> Just read this: http://jersey.576304.n2.nabble.com/Jersey-test-and-Spring-td5607651.html
>
> Perhaps that is the reason?
>

Yes, and there is a bug open related to this:

   http://java.net/jira/browse/JERSEY-591

Paul.

> Thanks
>
>
> On 12/01/2011 12:28, "Jonathan Cook - FM&T"
> <Jonathan.Cook2_at_bbc.co.uk> wrote:
>
>> Hi,
>>
>> I have the following simple example unit test:
>>
>> public class TableResourceTest extends JerseyTest {
>>
>> public TableResourceTest() throws Exception {
>> super(new WebAppDescriptor.Builder("bbc.forge.statsapi")
>> .contextPath("football")
>> .contextParam("contextConfigLocation",
>> "classpath:applicationContext.xml")
>> .contextParam("log4jConfigLocation",
>> "classpath:log4j.properties")
>> .contextParam("propertiesConfigLocation",
>> "classpath:propertiesConfigContext.xml")
>> .contextListenerClass(ContextLoaderListener.class)
>> .requestListenerClass(RequestContextListener.class)
>> .servletClass(SpringServlet.class).build());
>> }
>>
>> @Test
>> public void testTable() throws Exception {
>>
>> WebResource webResource = resource();
>> String responseMsg = webResource.path("/football/table/
>> competition/100").get(String.class);
>> Assert.assertEquals("Some Text", responseMsg);
>> }
>> }
>>
>> However on running the test I get a NullPointerException. The
>> resource I am invoking has an AutoWired property which is in the
>> applicationContext.xml. But it appears the http container isn’t
>> initialising spring at all. I’m not really sure why. I have looked
>> through some of the samples such as spring-annotations and it
>> doesn’t appear to be any different.
>>
>> The container is initialising the resources ok so I wasn’t sure why
>> it wasn’t picking up the applicationContext.xml. Or maybe it is and
>> this doesn’t work with autowiring?
>>
>> INFO: Scanning for root resource and provider classes in the
>> packages:
>> bbc.forge.statsapi
>> Jan 12, 2011 12:19:55 PM
>> com.sun.jersey.api.core.ScanningResourceConfig logClasses
>> INFO: Root resource classes found:
>>
>> Thanks
>> Jon