You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by "KARR, DAVID" <dk...@att.com> on 2011/09/03 00:34:00 UTC

Problems with initializing context in integration test of CXF app

I'm having trouble with an integration test (I hate calling them "unit tests" if they really aren't) of my CXF app.  My problem is probably only with Spring, but perhaps people here have run into this.

I define some JNDI references in my Spring context to datasources.  This will work fine when I deploy the WAR to my appserver, where I'll define the datasources, but in my integration test I have to manually create those datasources.

The code in my test class looks something like this:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"/applicationContext.xml"})
public class MyIntTest {
    @BeforeClass
    public static void init() {
        SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
        DataSource  someds  =
                new DriverManagerDataSource(System.getProperty("test.some.url"),
                                            System.getProperty("test.some.userName"),
                                            System.getProperty("test.some.password"));
        builder.bind("jdbc/someds", someds);
    }

The reference in the context looks like this:

    <jee:jndi-lookup jndi-name="jdbc/someds" id="someDataSource"/>

The problem (or at least one of the problems) is that this "init()" method will not get executed until after the context is finished initializing.  At a minimum, I need to be able to execute this method before the appcontext is initialized.

It's starting to look like I can't use the Spring runner, and will have to initialize Spring manually after I bind the datasource.

RE: Problems with initializing context in integration test of CXF app

Posted by "KARR, DAVID" <dk...@att.com>.
> -----Original Message-----
> From: KARR, DAVID
> Sent: Friday, September 02, 2011 3:34 PM
> To: users@cxf.apache.org
> Subject: Problems with initializing context in integration test of CXF
> app
> 
> I'm having trouble with an integration test (I hate calling them "unit
> tests" if they really aren't) of my CXF app.  My problem is probably
> only with Spring, but perhaps people here have run into this.
> 
> I define some JNDI references in my Spring context to datasources.
> This will work fine when I deploy the WAR to my appserver, where I'll
> define the datasources, but in my integration test I have to manually
> create those datasources.

If anyone's paying attention, I've managed to get this working.  I describe the basic solution at <http://forum.springsource.org/showthread.php?115434-Would-it-be-useful-if-SpringJUnit4ClassRunner-had-a-quot-pre-quot-context&p=382183#post382183>.

> 
> The code in my test class looks something like this:
> 
> @RunWith(SpringJUnit4ClassRunner.class)
> @ContextConfiguration({"/applicationContext.xml"})
> public class MyIntTest {
>     @BeforeClass
>     public static void init() {
>         SimpleNamingContextBuilder builder = new
> SimpleNamingContextBuilder();
>         DataSource  someds  =
>                 new
> DriverManagerDataSource(System.getProperty("test.some.url"),
> 
> System.getProperty("test.some.userName"),
> 
> System.getProperty("test.some.password"));
>         builder.bind("jdbc/someds", someds);
>     }
> 
> The reference in the context looks like this:
> 
>     <jee:jndi-lookup jndi-name="jdbc/someds" id="someDataSource"/>
> 
> The problem (or at least one of the problems) is that this "init()"
> method will not get executed until after the context is finished
> initializing.  At a minimum, I need to be able to execute this method
> before the appcontext is initialized.
> 
> It's starting to look like I can't use the Spring runner, and will have
> to initialize Spring manually after I bind the datasource.