http://www.jroller.com/page/raghukodali/Weblog/testing_ejb_3_0_beans?catname=
Testing EJB 3.0 beans outside the container
Unit testing EJBs is one of the pain points that made EJBs less popular with developers. It is not easy to have a serious Test Driven Development (TDD) with EJBs developed with specifications before EJB 3.0. One of the goals mentioned in the EJB 3.0 specification is "Improved ability for testing outside the container". Although there have been some frameworks which allowed to test outside the container, but having the spec support this feature will definitely provide more out-of-box experience and closely match with what is going to be finally deployed into the runtime.
As of today only Oracle EJB3.0 Container provides the facility of testing EJBs outside the container. I am sure we will see other containers do this as well in the future.
You can check out the whitepaper about Out-of-Container testing and the sample that comes as a demo with the container.
If you are using one of the IDE's like JDeveloper, you can integrate the TDD approach to EJB3.0 with few simple steps. Following are the steps, I took to make the sample that comes with Oracle EJB3.0 Container work in the IDE (Oracle JDeveloper 10.1.3 Preview release). EJB3_HOME refers to the directory where you have installed the Oracle EJB3.0 Container, and JDEV_HOME refers to the directory where you have installed JDeveloper.
- If you haven't installed JDeveloper 10.1.3 preview release, download and install
- Launch JDeveloper
- From the Help menu, select "Check for Updates" option
- Install JUnit extension (If you haven't done before), this option is shown as JUnit 10.1.3.3.51.2 in Step 2 of the wizard
- Create a a brand new application with an empty project (File |New)
- Make the following changes to the project properties (Double-click on the project)
- Select Project Content, add an entry for the Java Content that points to the sample. EJB3_HOME/demo/howtoejb30outofcontainer/src
- Select Libraries, change the J2SE version to point to JDK 1.5.x
- You will have to add the following jar files
ejb30.jar (EJB3_HOME/j2ee/home/lib/ejb30.jar)
ectest.jar (EJB3_HOME/toplink/jlib/ectest.jar)
toplink.jar (EJB3_HOME/toplink/jlib/toplink.jar)
bcel.jar (EJB3_HOME/j2ee/home/lib/bcel.jar)
jakarta-regexp-1.3.jar (EJB3_HOME/toplink/jlib/jakarta-regexp-1.3.jar
- Add the following libraries as well (Click on Add Library button)
J2EE
JUnit Runtime
Oracle JDBC
Oracle XML Parser V2
- Select Run/Debug, in the Java Options enter
Djava.persistence.setup.config=examples.ejb.cmp30.relationships.OrderDemoSessionConfig javaagent:$EJB3_HOME/toplink/jlib/ectest.jar (substitute $EJB3_HOME to installed directory). Enter examples.ejb.cmp30.relationships.OrderDemoSessionJunitTest as Program arguments
- Click OK to close the project properties
- Make necessaries changes to OrderDemoSessionConfig.java as detailed in the following how-to document.
- Compile the project
- Select OrderDemoSessionJunitTest.java, right mouse and choose Run.
- You will see a new tab JUnit TestRunner in the log window with test results
You can follow similar steps for the new EJBs that you want to develop and test with EJB3.0 specification
-raghu
( Mar 28 2005, 10:36:23 AM PST ) Permalink
Trackback URL: http://jroller.com/trackback/raghukodali/Weblog/testing_ejb_3_0_beans