Hey, I know this was mentioned the other day, though I can't find the e-mail, so I'm making a new thread. I attached a simple runner which I made as a personal PoC. It basically allows you to define a test as follows:
@RunWith(OpenEjbRunner.class)
@TestContext
public class BasicStatelessBeanTest
{
@EJB
public BasicStatelessBeanLocal basicStatelessBean;
@Resource
public InitialContext initialContext;
@Test
public void testSomeMethod() {}
}
It then runs the test and injects any @EJB annotated fields, and any
InitialContext type fields when they're annotated with @Resource.
It's very very basic though. Took me probably about 30 minutes to put
it together. The injection is a JNDI brute force method, where it
tries different combinations of names, depending on the annotation
arguments and field type. Further you can supply a properties resource
filename to @TestContext for customized InitialContext initialization.
It also only supports Local initial context (UNLESS you specify
mappedName in each @EJB annotation).
Note that the test runner should initialize the InitialContext for
JUnit 3 tests (tests extending "TestCase"), though it won't do any
injection, so it's pretty useless. I have yet to figure out how the
Runner works for JUnit 3 tests. Once I'm able to intercept the test
class instance the rest should be easy.
None of the above limitations is hard to fix, and I'm definitely going
to do them. Like I said, this is my result after playing with it for
about half an hour.
Further, I'm using reflection to do the injection, so the fields need
to be public.
Well, I'm using this way from now on. Our tests are already strapped
with a small framework I made, which wraps OpenEJB and is configured
through Spring, so it allows you to customize your lookups nicely,
even overriding certain EJB lookups with spring beans. If anyone wants
some more of this, just let me know and I'll send it along. I'll be
evolving the for our own purposes, and if there's any interest I'm
willing to send updates.
Note that whatever I send is licensed under Apache 2.0, so you're free
to use it in whichever way the license allows.
Attached is the maven project for the runner. It contains tests to
demonstrate it's use. If the attachment was rejected by the mailing
list, just reply and I'll find another way to distribute it.
Quintin Beukes
JUnitTest.tar.bz2
Description: BZip2 compressed data
