站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Netbeans 专题使用 NetBeans IDE 测试 Enterprise Beans

使用 NetBeans IDE 测试 Enterprise Beans

摘要: 使用 NetBeans IDE 测试 Enterprise Beans John Jullion-Ceccarelli 和 Petr Blaha JUnit 并不是测试企业应用程序的最佳测试框架,因为...
使用 NetBeans IDE 测试 Enterprise Beans

John Jullion-Ceccarelli 和 Petr Blaha

JUnit 并不是测试企业应用程序的最佳测试框架,因为 JUnit 运行在与 enterprise beans 不同的 JVM 上。因此,必须使用远程接口来访问并测试 enterprise beans。

开始之前,必须在计算机上安装 Sun Java System (SJS) Application Server Platform Edition 8.1(下载)。您无法将企业应用程序部署到绑定的 Tomcat 服务器。还必须在 IDE 中注册应用程序服务器,通过选择 Tools > Server Manager。

设置示例项目

下载示例项目 TestEnterpriseBean 并在 IDE 中打开它。该 bean 有一个会话 bean (AdminBean),拥有三个简单的业务方法:

    public String getString(String name) {
                return "response:" + name;
                }

                public int getInt(int number1, int number2) {
                return number1 * number2;
                }

                public vo.Person getVO() {
                return new vo.Person("Joe User",13);
                }

生成测试

  1. 右键单击项目的 Test Libraries 节点,然后选择 Add JAR/Folder 将应用程序服务器的 lib/j2ee.jarlib/appserv-rt.jar 文件添加到测试类路径。
  2. 展开 Enterprise Beans 节点,然后双击 AdminSB 在 Source Editor 中打开 AdminBean.java
  3. 按下 Ctrl-Alt-J 生成测试。单击 OK 使用默认值选项运行测试。
  4. 删除基础架构方法的测试:
    • testSetSessionContext
    • testEjbActivate
    • testEjbPassivate
    • testEjbRemove
    • testEjbCreate
  5. 将以下字段声明添加到 AdminBeanTest
    private beantest.AdminRemote admin;
  6. 右键单击 AdminBeanTest.java,然后选择 Enterprise Resources > Call Enterprise Bean。选择 AdminSB,然后单击 OK。IDE 会输入一个 lookupAdminBean 方法。
  7. 更改 lookupAdminBean 方法,使用全局 JNDI 名代替本地名:
      private beantest.AdminRemote lookupAdminBean() {
                        try {
                        javax.naming.Context c = new javax.naming.InitialContext();
                        Object remote = c.lookup("ejb/AdminBean");
                        beantest.AdminRemoteHome rv =
                        (beantest.AdminRemoteHome) javax.rmi.PortableRemoteObject.narrow(remote,
                        beantest.AdminRemoteHome.class);
                        return rv.create();
                        }
  8. 将以下粗体表示的代码添加到 setUptearDown 方法中:
        protected void setUp() throws Exception {
                        admin = lookupAdminBean();
                        }
    
                        protected void tearDown() throws Exception {
                        admin.remove();
                        }
  9. 实现对 enterprise bean 的业务方法进行测试的方法:
        public void testGetString() throws java.rmi.RemoteException {
                            System.out.println("testGetString");
                            assertEquals("response:Test",admin.getString("Test"));
                            }
    
                            public void testGetInt() throws java.rmi.RemoteException  {
                            System.out.println("testGetInt");
                            assertEquals(5*3,admin.getInt(5,3));
                            }
    
                            public void testGetVO() throws java.rmi.RemoteException {
                            System.out.println("testGetVO");
                            assertEquals("xxxxx", admin.getVO().getName());
                            }
                        

运行测试

  1. 右键单击 TestEnterpriseBean 项目,然后选择 Deploy Project。
  2. 选择 Run > Test "TestEnterpriseBean" (Alt-F6)。IDE 会运行 JUnit 测试,然后显示以下输出:
    testGetString
                        testGetInt
                        testGetVO
                        Testsuite: beantest.AdminBeanTest
                        Tests run: 3, Failures: 1, Errors: 0, Time elapsed: 1.903 sec
    
                        ------------- Standard Output ---------------
                        testGetString
                        testGetInt
                        testGetVO
                        ------------- ---------------- ---------------
                        ------------- Standard Error -----------------
                        13-Jun-2005 15:02:40 com.sun.corba.ee.spi.logging.LogWrapperBase doLog
                        INFO: "IOP00710299: (INTERNAL) Successfully created IIOP
                        listener on the specified host/port: all interfaces/4681"
                        ------------- ---------------- ---------------
                        Testcase: testGetVO(beantest.AdminBeanTest):FAILED
                        expected:<xxxxx> but was:<Joe User>
                        junit.framework.ComparisonFailure: expected:<xxxxx> but was:<Joe User>
                        at beantest.AdminBeanTest.testGetVO(AdminBeanTest.java:54)
                        13-Jun-2005 15:02:40 com.sun.corba.ee.spi.logging.LogWrapperBase doLog
                        INFO: "IOP00710299: (INTERNAL) Successfully created IIOP
                        listener on the specified host/port: all interfaces/4681"
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    
                        Test beantest.AdminBeanTest FAILED
                        test-report:
                        C:\new\TestEnterpriseBean\nbproject\build-impl.xml:383: Some tests failed; see details above.
                        BUILD FAILED (total time: 4 seconds)
  3. 现在,我们更改测试以查找正确的人。转到 TestAdminBean.java 中的 testGetVO 方法,然后进行以下更改:
        public void testGetVO() throws java.rmi.RemoteException{
                        System.out.println("testGetVO");
                        assertEquals("Joe User", admin.getVO().getName());
                        }
  4. 按 Alt-F6 再次运行测试。IDE 会显示以下输出:
    testGetString
                        testGetInt
                        testGetVO
                        Testsuite: beantest.AdminBeanTest
                        Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 1.993 sec
    
                        ------------- Standard Output ---------------
                        testGetString
                        testGetInt
                        testGetVO
                        ------------- ---------------- ---------------
                        ------------- Standard Error -----------------
                        13-Jun-2005 15:05:06 com.sun.corba.ee.spi.logging.LogWrapperBase doLog
                        INFO: "IOP00710299: (INTERNAL) Successfully created IIOP
                        listener on the specified host/port: all interfaces/4686"
                        ------------- ---------------- ---------------
                        13-Jun-2005 15:05:06 com.sun.corba.ee.spi.logging.LogWrapperBase doLog
                        INFO: "IOP00710299: (INTERNAL) Successfully created IIOP
                        listener on the specified host/port: all interfaces/4686"
                        test-report:
                        test:
                        BUILD SUCCESSFUL (total time: 3 seconds)



↑返回目录
前一篇: 使用 NetBeans IDE 5.0 开发 Web 应用程序快速入门指南
后一篇: 使用 CMP Beans 生成主键值