For what it's worth, I changed the configuration a bit, just in case
Surefire's alteration of the java.class.path was relevant. This code
provides explicit paths to the EJB3 deployer, for the configuration
files and for the location of the EJBs.
Change EmbeddedEjb3TestCase.startupEmbeddedJboss to be this:
public static void startupEmbeddedJboss()
{
EJB3StandaloneBootstrap.boot("target/test-classes");
EJB3StandaloneBootstrap.scanClasspath("target/classes");
}
It actually CRASHES surefire, I think because of a null pointer
exception in EJB3StandaloneBootstrap.boot. But still runs fine in
eclipse. Don't know what the problem is, but it seems like a bug in
Surefire.
I updated SUREFIRE-38 to document this.
By the way, thank you to Chris Richardson and Carlos Sanchez for
their interest in this problem. I think it is well worthwhile to
make sure Surefire works properly with EJB3 embeddable testing. Once
EJB3 is finalized, people are going to be using embeddable containers
for unit testing, because it is awesome.
If I am unable to get this to work, is there an alternate tester I
could use that works like the old Maven 1 junit tester? It is, I
believe, the only hurdle remaining for me to migrate to Maven 2.
Dan R. Greening, Ph.D., CEO BigTribe Corporation, http://
dan.greening.name/contact.htm
On Mar 28, 2006, at 8:08 AM, Dan Greening wrote:
I appreciate that many people tried to help out with suggestions,
but none of them seemed to work.
I have created a test case that shows how the JUnit test fails
under Surefire (with Maven 2.0.3), and succeeds in Eclipse using
Maven 2.0.3's eclipse:eclipse, both using the same pom.xml. The
test case and detailed instructions are attached to JIRA ticket
SUREFIRE-38. The problem may be related to the fact that Surefire
resets the java.class.path so EJB3 embeddable container cannot find
the annotations. I may test this hypothesis today.
I have spent many days on this problem, mainly because I want to
convert our EJB3 application from Maven 1.0.2 to Maven 2. I also
contributed a fix to the Maven 2 ejb plugin, which is required to
build EJB3 components. Sure could use some help on this.
Dan R. Greening, Ph.D., CEO BigTribe Corporation, http://
dan.greening.name/contact.htm
On Mar 19, 2006, at 11:16 AM, Dan Greening wrote:
I am pulling my hair out.
If you have gotten maven2 surefire plugin (or anything else) to
initiate a JBoss EJB3 embeddable container, I am desperate for
your POM.
I am trying very hard to get the JBoss EJB3 embeddable container
to operate under the surefire-plugin, under the test phase. I
cannot, for the life of me, get it to find the InitialContext.
I've set the system properties properly, and I even have a
duplicated it in jndi.properties. My configuration works under
maven1, but not maven2.
I think it could be caused by one of two things. Either
a. The surefire plugin isolated classloader is making it
impossible for the embeddable container to find the annotated
classes.
b. I have screwed up my POM somehow.
If all you tell me is "yes, I have gotten the JBoss EJB3
embeddable container to run and see my classes under surefire",
you will have done me a favor, because that would indicate it is
possible. However, it would be really nice if you would also send
your POM so I could understand your configuration.
Seriously, this has been driving me nuts for days, so I could
really use the help.
Dan R. Greening, Ph.D., CEO BigTribe Corporation, http://
dan.greening.name/contact.htm