<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, 2011 Oracle and/or its affiliates. All rights reserved.
-->

<html>
    <head>
        <title>测试 Maven 企业应用程序</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <meta name="description" content="A tutorial on how to use NetBeans IDE to test a database connection in a Maven enterprise application.">
        <link rel="stylesheet" href="../../../netbeans.css">
        <link rel="stylesheet" type="text/css" href="../../../lytebox.css" media="screen">
        <script type="text/javascript" src="../../../images_www/js/lytebox-compressed.js"></script>
        <meta name="author" content="ken ganfield">
        
    </head>
    <body>
        <h1>测试 Maven 企业应用程序</h1>
        
        <p>本教程说明了如何使用 NetBeans IDE 和 Maven 原型测试简单的企业应用程序。在本教程中，将创建包含实体类和会话 Bean 的企业应用程序。您将使用向导为 Bean 类创建一个简单的测试类，然后在 IDE 中运行测试。测试类将用于创建 GlassFish 嵌入式 EJB 容器的实例，以测试与数据库的连接。
        </p>

                       
           <p><b>教程练习</b></p>
           <img alt="此页上的内容适用于 NetBeans IDE 7.1" class="stamp" src="../../../images_www/articles/71/netbeans-stamp.png" title="此页上的内容适用于 NetBeans IDE 7.1">

            <ul>
                <li><a href="#intro">在 IDE 中使用 Maven</a></li>
                <li><a href="#Exercise_1">创建企业应用程序</a>
                    <ul>
                        <li><a href="#Exercise_1a">创建 Web 项目</a></li>
                        <li><a href="#Exercise_1b">创建实体类</a></li>
                        <li><a href="#Exercise_1c">创建会话 Bean</a></li>
                    </ul>
                </li>
                <li><a href="#Exercise_2">创建会话 Bean 测试</a></li>
<!--                <li><a href="#Exercise_3">Checking Code Coverage</a></li>
                <li><a href="#Exercise_4">Downloading the Solution Project</a></li>-->
            </ul>
           
            <p><b>要学习本教程，您需要具备以下软件和资源。</b></p>
            <table>
            <tbody>
                <tr>
                    <th class="tblheader" scope="col">软件或资源</th>
                    <th class="tblheader" scope="col">要求的版本</th>
                </tr> 
                <tr>
                    <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
                    <td class="tbltd1">7.1，Java EE 包</td>
                </tr>
                <tr>
                    <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 开发工具包 (JDK)</a></td>
                    <td class="tbltd1">版本 6 或版本 7</td>
                </tr>
                <tr>
                    <td class="tbltd1">GlassFish Server Open Source Edition</td>
                    <td class="tbltd1">3.1.1</td>
            </tr>
            </tbody>
        </table>
        <p class="notes"><strong>注：</strong>下载的 Java EE 包中附带了 GlassFish Server 3.1.1 的安装程序。在 NetBeans IDE 的安装过程中，您可以安装和注册 GlassFish。</p>
            <p><b>先决条件</b></p>
            <p>本文档假定您具备以下技术的一些基本知识或编程经验：</p>
            <ul>
                <li>Java 编程</li>
                <li>NetBeans IDE</li>
            </ul>

            <p>在开始本教程之前，您可以先阅读下面这些文档。</p>
            <ul>
                <li><a href="http://wiki.netbeans.org/MavenBestPractices" target="_blank">NetBeans IDE 中的 Apache Maven 最佳做法</a></li>
                <li><a href="http://www.sonatype.com/books/maven-book/reference/introduction.html" target="_blank">Chapter 1. Introducing Apache Maven</a>（第 1 章. Apache Maven 简介，来自 <a href="http://www.sonatype.com/books/maven-book/reference/public-book.html" target="_blank">Maven: The Definitive Guide</a>（Maven：权威指南））</li>
            </ul>
<!--            <p class="tips">You can download <a href="https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaEE%252FMavenEnterpriseApp.zip">a zip archive of the finished project</a>.</p>-->

        <a name="intro"></a>
        <!-- ===================================================================================== -->
        <h2>在 IDE 中使用 Maven</h2>
        <p>NetBeans IDE 中完全集成了 Maven 支持。开发使用 Maven 框架的项目几乎与在 Ant 中开发项目完全相同。不过，Maven 构建项目和使用依赖关系的方式有一些区别。如果是第一次创建 Maven 应用程序，以下提示可帮助您避免某些问题。</p>


        <p class="tips"><strong>检查 Maven 设置</strong></p>
        <div class="indent">
        <p>如果这是您首次创建 Maven 项目，则需要在 "Options"（选项）窗口中检查 Maven 配置设置。要学完本教程，您的本地系统中必须安装有 Maven。从 NetBeans IDE 7.0 开始，Maven 与 IDE 捆绑在一起，并随同 IDE 一起安装。如果您使用的是早期版本的 IDE，则可以从 <a href="http://maven.apache.org/">Maven 站点</a>下载该安装程序。</p>

        <ol>
            <li>在 IDE 中打开 "Options"（选项）窗口。</li>
            <li>在 "Options"（选项）窗口中选择 "Miscellaneous"（其他）类别，然后单击 "Maven" 标签。</li>
            <li>确认指定了 Maven Home 目录。
                <p>您可以使用与 IDE 捆绑在一起的 Maven 版本，也可以指定 Maven 在本地的安装位置（要求为 2.0.9 或更高版本）。</p></li>
            <li>检查本地 Maven 资源库的位置是否正确。</li>
            <li>选择 "OK"（确定）以关闭 "Options"（选项）窗口。</li>
        </ol>

        <p class="notes"><strong>注：</strong>如果以前尚未在 IDE 中创建 Maven 项目，则首先需要在 IDE 中激活 Maven 模块。为此，您可以在新建项目向导中选择一个 Maven 项目原型。选择原形之后，IDE 会自动激活相应模块。在 IDE 中，您无需完成向导即可激活 Maven。</p>
        </div>

        <p class="tips"><strong>更新 Maven 资源库</strong></p>
        <div class="indent">
        <p>本地和远程 Maven 资源库可用于代码完成以及构建项目。应更新 Maven 远程资源库索引，以确保在开发项目时可方便地使用所需的任何工件。可以在 "Options"（选项）窗口的 "Maven" 标签中配置 IDE 检查更新的频率。您可以执行即时更新检查，并使用 "Maven Repository Browser"（Maven 资源库浏览器）览本地和远程 Maven 资源库。</p>

        <ol>
            <li>选择 "Window"（窗口）> "Other"（其他）> "Maven Repository Browser"（Maven 资源库浏览器）。</li>
            <li>单击 "Maven Repository Browser"（Maven 资源库浏览器）窗口顶部的 "Update Indexes"（更新索引）(<img alt="Update Indexes（更新索引）按钮" src="../../../images_www/articles/72/javaee/maven-testing/maven-refreshrepo.png" title="Update Indexes（更新索引）按钮">)。</li>
        </ol>

        <p>在单击 "Update Indexes"（更新索引）时，IDE 将检查并下载每个 Maven 远程资源库的最新索引。索引表示位于资源库中的工件的当前状态，并用于提供对可用于应用程序的工件的引用。默认情况下，在明确需要工件之前，IDE 不会从资源库中下载该工件。</p>

        <p class="notes"><strong>注：</strong>索引非常大，因此可能需要一些时间才能全部更新。</p>
        </div>


        <p class="tip">有关在 NetBeans IDE 中使用 Maven 的更多详细信息，请参见<a href="https://netbeans.org/kb/docs/java/maven-hib-java-se.html">使用 Hibernate 创建 Maven Swing 应用程序</a>教程中的<a href="https://netbeans.org/kb/docs/java/maven-hib-java-se.html#02">配置 Maven</a> 部分以及 <a href="http://wiki.netbeans.org/MavenBestPractices" target="_blank">NetBeans IDE 中的 Apache Maven 最佳做法</a>。</p>


        <a name="Exercise_1"></a> 
            <!--Exercise 1: -->
        <h2>创建企业应用程序</h2>
        <p>在本部分中，将创建一个简单的 Web 应用程序，其中包含实体类以及用于访问该实体类的会话 Bean。</p>
        
        <div class="indent">
            <a name="Exercise_1a"></a> 
            <h3>创建 Web 项目</h3>
            <p>在本练习中，将使用新建项目向导，通过 Maven 原型创建 Java EE 6 Web 应用程序。使用该向导创建项目时，可将 GlassFish Server 3.1.1 指定为目标服务器。</p>
            <ol>
                <li>从主菜单中选择 "File"（文件）> "New Project"（新建项目）（Ctrl-Shift-N 组合键；在 Mac 上为 ⌘-Shift-N 组合键），以打开新建项目向导。</li>
                <li>在 "Maven" 类别中选择 "Web Application"（Web 应用程序）。单击 "Next"（下一步）。</li>
                <li>将项目命名为 <strong>mavenwebtestapp</strong> 并设置项目位置。单击 "Next"（下一步）。</li>
                <li>在 "Server"（服务器）下拉列表中选择 "GlassFish Server 3.1.1"。</li>
                <li>在 "Java EE Version"（Java EE 版本）下拉列表中选择 "Java EE 6 Web"。单击 "Finish"（完成）。</li>
            </ol>
            <p>在单击 "Finish"（完成）后，IDE 将创建 Web 应用程序，并在 "Projects"（项目）窗口中打开该项目。</p>

<img alt="显示已生成项目的 Projects（项目）窗口" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-projects.png" title="显示已生成项目的 Projects（项目）窗口">

<p>如果在 "Projects"（项目）窗口中展开项目节点，则可以看到 <tt>javaee-web-api-6.0</tt> JAR 作为项目依赖关系列出，而 JDK 1.6 作为 Java 依赖关系列出。IDE 生成了项目 POM (<tt>pom.xml</tt>)，并将该文件列在 "Project Files"（项目文件）节点的下方。
    </p>
            
            <a name="Exercise_1b"></a> 
            <h3>创建实体类</h3>
            <p>在本练习中，将使用新建文件向导创建实体类。创建实体类时，将在该向导中选择 <tt>jdbc/sample</tt> 数据源。您不需要创建或注册新的数据源，因为 <tt>jdbc/sample</tt> 数据源已在安装服务器时进行了注册。
            </p>

            <p class="notes"><strong>注：</strong>如果要创建新数据源或使用其他数据源，则必须先在服务器上注册该数据源，然后再使用嵌入的容器测试应用程序。使用嵌入的容器测试应用程序时，IDE 将不会为您注册数据源，因为在部署到 GlassFish Server 实例时，它已对该数据源进行了注册。 
            </p>

            <ol>
                <li>右键单击项目节点，然后选择 "New"（新建）> "Entity Class"（实体类）。
                    <p>此外，也可以从主菜单中选择 "File"（文件）> "New File"（新建文件）（Ctrl-N 组合键；在 Mac 上为 ⌘-N 组合键），然后在 "Persistence"（持久性）类别中选择 "Entity Class"（实体类）。</p></li>
                <li>键入 <strong>MyEntity</strong> 作为类名。</li>
                <li>选择 <tt>com.mycompany.mavenwebtestapp</tt> 作为包，并将 "Primary Key Type"（主键类型）设置为 <strong><tt>int</tt></strong>。</li>
                <li>确认选中了 "Create Persistence Unit"（创建持久性单元）。单击 "Next"（下一步）。</li>
                <li>在 "Data Source"（数据源）下拉列表中选择 <strong>jdbc/sample</strong>。</li>
                <li>确认选中了 "Use Java Transaction APIs"（使用 Java 事务 API），然后选择 "Drop and Create"（删除并创建）作为 "Table Generation Strategy"（表生成策略）。单击 "Finish"（完成）。<br /> <img alt="显示已生成项目的 Projects（项目）窗口" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-pu.png" title="显示已生成项目的 Projects（项目）窗口">
                    
                    <p>在单击 "Finish"（完成）后，IDE 将生成 MyEntity 类，并在源代码编辑器中打开该类。IDE 将添加 <tt>eclipselink-2.3.0</tt>、<tt>javax.persistence-2.0.3</tt> 和 <tt>org.eclipse.persistence.jpa.modelgen.processor-2.3.0</tt> 工件作为依赖关系。</p></li>
                <li>在源代码编辑器中，将私有字段 <tt>name</tt> 添加到类中。
                <pre class="examplecode">private String name;</pre>
                </li>
                <li>在编辑器中右键单击，然后从 "Insert Code"（插入代码）弹出式菜单（Alt-Insert 组合键；在 Mac 上为 Ctrl-I 组合键）中选择 "Getter and Setter"（Getter 和 Setter），以便为 <tt>name</tt> 字段生成 getter 和 setter。 </li>
                <li>添加以下方法 
                <pre class="examplecode">
public MyEntity(int id) {
    this.id = id;
    name = "Entity number " + id + " created at " + new Date();
}</pre>
                </li>
                <li>添加以下 <tt>@NamedQueries</tt> 和 <tt>@NamedQuery</tt> 标注（以粗体显示），以创建命名 SQL 查询，用于在 MyEntity 表中查找所有记录。 
                <pre class="examplecode">
@Entity
<strong>@NamedQueries({
    @NamedQuery(name = "MyEntity.findAll", query = "select e from MyEntity e")})</strong>
public class MyEntity implements Serializable {</pre>
                    <p></p>
                </li>
                <li>单击类声明旁边左旁注中的提示，然后选择 <strong>Create default constructor</strong>（创建默认的构造函数）提示。<br /> <img alt="显示已生成项目的 Projects（项目）窗口" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-createconstructor.png" title="显示已生成项目的 Projects（项目）窗口">
                </li>
                <li>修复 import 语句（Ctrl-Shift-I 组合键；在 Mac 上为 ⌘-Shift-I 组合键），以便为 <tt>javax.persistence.NamedQuery</tt>、<tt>javax.persistence.NamedQueries</tt> 和 <tt>java.util.Date</tt> 添加 import 语句。保存所做的更改。 <br />
                
                </li>
            </ol>

            
            <a name="Exercise_1c"></a> 
            <h3>创建会话 Bean</h3>

            <p>在本练习中，将使用向导为 <tt>MyEntity</tt> 实体类创建会话 Facade。在使用向导生成 Facade 时，IDE 还将生成抽象 Facade，其中包含一些访问实体类时常用的方法，如 <tt>create</tt> 和 <tt>find</tt>。然后，将两个方法添加到 Facade 中。 
            </p>

            <ol>
                <li>右键单击项目节点，然后选择 "New"（新建）> "Other"（其他）。
                    <p>此外，也可以从主菜单中选择 "File"（文件）> "New File"（新建文件）（Ctrl-N 组合键；在 Mac 上为 ⌘-N 组合键），以打开新建文件向导。</p></li>
                <li>在 "Enterprise JavaBeans" 类别中，选择 "Session Beans For Entity Classes"（实体类的会话 Bean）。单击 "Next"（下一步）。</li>
                <li>从 "Available Entity Classes"（可用的实体类）列表中选择 <tt>MyEntity</tt> 类，然后单击 "Add"（添加）。单击 "Next"（下一步）。</li>
                <li>使用该向导的 "Generated Session Beans"（生成的会话 Bean）面板中的默认属性。单击 "Finish"（完成）。
                <p>在单击 "Finish"（完成）后，IDE 将在 <tt>com.mycompany.mavenwebtestapp</tt> 包中生成 <tt>AbstractFacade.java</tt> 和 <tt>MyEntityFacade.java</tt>，并在源编辑器中打开这些类。</p>
                <p>在源代码编辑器中，可以看到 IDE 为 <tt>EntityManager</tt> 生成了代码，并添加了 <tt>@PersistenceContext</tt> 标注，以指定持久性单元。</p>
<pre class="examplecode">
@Stateless
public class MyEntityFacade extends AbstractFacade&lt;MyEntity&gt; {
    @PersistenceContext(unitName = "com.mycompany_mavenwebtestapp_war_1.0-SNAPSHOTPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public MyEntityFacade() {
        super(MyEntity.class);
    }
    
}</pre>

                </li>
                <li>将以下方法添加到 <tt>MyEntity.java</tt> 中。 
                <pre class="examplecode">
    @PermitAll
    public int verify() {
        String result = null;
        Query q = em.createNamedQuery("MyEntity.findAll");
        Collection entities = q.getResultList();
        int s = entities.size();
        for (Object o : entities) {
            MyEntity se = (MyEntity) o;
            System.out.println("Found: " + se.getName());
        }

        return s;
    }

    @PermitAll
    public void insert(int num) {
        for (int i = 1; i <= num; i++) {
            System.out.println("Inserting # " + i);
            MyEntity e = new MyEntity(i);
            em.persist(e);
        }
    }</pre>
                </li>
                <li>修复导入以添加所需的 import 语句。保存所做的更改。 <br /> <img alt="显示已生成项目的 Projects（项目）窗口" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-fiximports.png" title="显示已生成项目的 Projects（项目）窗口">
                    <p class="notes"><strong>注：</strong>请确认 "Fix All Imports"（修复所有导入）对话框中的 <strong><tt>javax.persistence.Query</tt></strong> 处于选中状态。</p>
                </li>

            </ol>
        </div>
        
        <a name="Exercise_2"></a> 
        <h2>创建会话 Bean 测试</h2>
        <p>在本部分中，将为 <tt>MyEntityFacade</tt> 会话 Facade 创建 JUnit 测试类。IDE 将为 Facade 类中的每个方法以及抽象 Facade 中的每个方法生成框架测试方法。您需要标注为抽象 Facade 中的方法生成的测试方法，以指示 IDE 和 JUnit 测试运行器将其忽略。然后，您需要修改已添加到 <tt>MyEntityFacade</tt> 中的 <tt>verify</tt> 方法的测试方法。
            </p>
            
            
        <p>在生成的测试中，将会看到 IDE 自动添加用于调用 <tt>EJBContainer</tt> 以创建 EJB 容器实例的代码。在生成测试类后，包含调用的行会在左旁注中显示一条提示，指出 Java EE API 不在类路径中，并建议使用 GlassFish Server 3.1 安装中的 EJBContainer。此提示将会修改 POM 以添加一个指定 GlassFish 本地安装路径的属性。
        </p>
        
<!--        <p>The Ant version includes steps to use @BeforeClass and @AfterClass to create and close the container, 
            but these annotations do not seem to work with Maven.</p>-->

        <ol>
            <li>在 "Projects"（项目）窗口中右键单击 <tt>MyEntityFacade.java</tt>，然后选择 "Tools"（工具）> "Create JUnit Tests"（创建 JUnit 测试）。</li>
            <li>选择 JUnit 4.x 作为 JUnit 版本。单击 "Select"（选择）按钮。</li>
            <li>使用 "Create Tests"（创建测试）对话框中的默认选项。单击 "OK"（确定）。
                <p>默认情况下，IDE 将生成框架测试类，其中包含 <tt>MyEntityFacade</tt> 和 <tt>AbstractFacade</tt> 中每个方法的测试。IDE 自动将 JUnit 4.10 的依赖关系添加到 POM 中。</li>
            <li>使用 <tt>@Ignore</tt> 标注对每个测试方法（<tt>testVerify</tt> 除外）进行标注。运行测试时，IDE 将跳过使用 <tt>@Ignore</tt> 标注的每个测试。
                <p>此外，也可以删除所有测试方法，但 <tt>testVerify</tt> 除外。</p>
            </li>
            <li>找到测试类中的 <tt>testVerify</tt> 测试方法。
                
                <p>您可以看到，调用 <tt>EJBContainer</tt> 的行旁边的左旁注中出现错误标注。</p>
                <pre class="examplecode">
    @Test
    public void testVerify() throws Exception {
        System.out.println("verify");
        EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
        MyEntityFacade instance = (MyEntityFacade)container.getContext().lookup("java:global/classes/MyEntityFacade");
        int expResult = 0;
        int result = instance.verify();
        assertEquals(expResult, result);
        container.close();
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }</pre>
                </li>
                <li>单击旁注中的错误标注，然后从弹出式菜单的建议中选择 <strong>Use EJBContainer from installation of GlassFish Server 3.1.1</strong>（使用 GlassFish Server 3.1.1 安装中的 EJBContainer）。
                    <p>此外，也可以将插入光标放在产生该错误的行中，并按 Alt+Return 组合键，然后在弹出式菜单中选择相应的建议。 </p>
                  <a href="../../../images_www/articles/72/javaee/maven-testing/maven-testing-ejbcontainer.png" rel="lytebox" title="选择该提示可指定 EJBContainer 的位置"> <img alt="显示用于指定 EJBContainer 位置的编辑器提示的屏幕快照" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-ejbcontainer.png" style="width: 600px" title="单击查看大图"></a>  
                    
                    
                <p>在选择建议之后，IDE 会将 <tt>&lt;glassfish.embedded-static-shell.jar&gt;</tt> 元素（以粗体显示）添加到 POM 中的 <tt>&lt;properties&gt;</tt> 元素内。<tt>&lt;glassfish.embedded-static-shell.jar></tt> 元素用于标识 GlassFish Server 的本地安装路径。如果该本地安装路径发生变化，则需要修改 POM 中的此元素。 
                </p>
                <pre class="examplecode">
    &lt;properties&gt;
        &lt;endorsed.dir&gt;${project.build.directory}/endorsed&lt;/endorsed.dir&gt;
        &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
        <strong>&lt;glassfish.embedded-static-shell.jar&gt;/Applications/NetBeans/glassfish-3.1.1/glassfish/lib/embedded/glassfish-embedded-static-shell.jar&lt;/glassfish.embedded-static-shell.jar&gt;</strong>
<!--        &lt;glassfish.embedded-static-shell.jar&gt;/Applications/NetBeans/glassfish-3.1.1/glassfish/lib/embedded/glassfish-embedded-static-shell.jar&lt;/glassfish.embedded-static-shell.jar&gt;-->
    &lt;/properties&gt;
                </pre>
                <p>IDE 还将 <tt>glassfish-embedded-static-shell</tt> 依赖关系添加到引用本地安装路径的 POM 中。</p>
                <pre class="examplecode">
        &lt;dependency&gt;
            &lt;groupId&gt;org.glassfish.extras&lt;/groupId&gt;
            &lt;artifactId&gt;glassfish-embedded-static-shell&lt;/artifactId&gt;
            &lt;version&gt;3.1.1&lt;/version&gt;
            &lt;scope&gt;system&lt;/scope&gt;
            &lt;systemPath&gt;${glassfish.embedded-static-shell.jar}&lt;/systemPath&gt;
        &lt;/dependency&gt;
                </pre>
                </li>
                <li>对 <tt>testVerify</tt> 测试方法的框架进行以下更改（以粗体显示）。 
                <pre class="examplecode">
@Test
public void testVerify() throws Exception {
    System.out.println("verify");
    EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
    MyEntityFacade instance = (MyEntityFacade)container.getContext().lookup("java:global/classes/MyEntityFacade");
    <strong>System.out.println("Inserting entities...");
    instance.insert(5);</strong>
    int result = instance.verify();
    <strong>System.out.println("JPA call returned: " + result);
    System.out.println("Done calling EJB");
    Assert.assertTrue("Unexpected number of entities", (result == 5));</strong>
    container.close();
}</pre>
                </li>
                <li>修复 import 语句以添加 <tt>junit.framework.Assert</tt>。保存所做的更改。</li>
                <li>在 "Projects"（项目）窗口中右键单击项目节点，然后选择 "Test"（测试）。 </li>
            </ol>

            <p>在选择 "Test"（测试）时，IDE 将构建应用程序，并运行构建生命周期的测试阶段。单元测试将使用 Surefire 插件执行，该插件支持运行 JUnit 4.x 测试。有关 Surefire 插件的更多信息，请参见 <a href="http://maven.apache.org/plugins/maven-surefire-plugin/">http://maven.apache.org/plugins/maven-surefire-plugin/</a>。</p>
                
            

            <p>测试结果显示在 "Test Results"（测试结果）窗口中。</p>
            
            <p>在本示例中，可以看到通过了九项测试。如果在 "Output"（输出）窗口中查看，则可以看到只运行了一项测试，而其他八项测试都被跳过。</p>
            <pre class="examplecode">
Running com.mycompany.mavenwebtestapp.MyEntityFacadeTest
verify
...
Inserting entities...
Inserting # 1
Inserting # 2
Inserting # 3
Inserting # 4
Inserting # 5
Found: Entity number 2 created at Fri Feb 25 18:26:53 CET 2011
Found: Entity number 4 created at Fri Feb 25 18:26:53 CET 2011
Found: Entity number 3 created at Fri Feb 25 18:26:53 CET 2011
Found: Entity number 1 created at Fri Feb 25 18:26:53 CET 2011
Found: Entity number 5 created at Fri Feb 25 18:26:53 CET 2011
JPA call returned: 5
Done calling EJB
...

Results :

Tests run: 9, Failures: 0, Errors: 0, Skipped: 8
</pre>

            
<!--            <a name="Exercise_3"></a> 
            <h2>Checking Code Coverage</h2>

            <p>In this section you install the Maven Code Coverage plugin and configure the POM to add reporting. See http://wiki.netbeans.org/MavenCodeCoverage</p>
            <ol>
    Download and install plugin
<li>Open the Services window in the IDE.</li>
<li>Expand the sample datasource connection under the Database node.</li>
<li>Expand the Tables node under the App node.</li>
<li>Right-click the SEQUENCE table and choose Delete.</li>
                <li>Add the following to the POM. Save your changes. 
                <pre class="examplecode">&lt;/dependencies&gt;

<strong>&lt;reporting&gt;
  &lt;plugins&gt;
    &lt;plugin&gt;
      &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
      &lt;artifactId&gt;cobertura-maven-plugin&lt;/artifactId&gt;
      &lt;version&gt;2.5.1&lt;/version&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/reporting&gt;</strong>

&lt;build&gt;</pre>
                </li>
                <li>Right-click project node and choose Code Coverage &gt; Show Report.</li>
                <li>Open MyEntityFacadeTest in the editor.</li>
                <li>Modify the test to change the JNDI lookup for the bean from 
                    <tt>java:global/classes/MySessionBean</tt> to <tt>java:global/cobertura/MySessionBean</tt>.
                    <pre class="examplecode">    
    @Test
    public void testVerify() throws Exception {
        System.out.println("verify");
        EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
//        MyEntityFacade instance = (MyEntityFacade)container.getContext().lookup("java:global/classes/MyEntityFacade");
        <strong>MyEntityFacade instance = (MyEntityFacade)container.getContext().lookup("java:global/cobertura/MyEntityFacade");</strong>
        System.out.println("Inserting entities...");
        instance.insert(5);
        int result = instance.verify();
        System.out.println("JPA call returned: " + result);
        System.out.println("Done calling EJB");
        Assert.assertTrue("Unexpected number of entities", (result==5));
        container.close();
    }</pre>

                </li>
                
                
                <li>Click Run All Tests in Code Coverage window. 

                    <p>Result displays coverage is 0% and the following is in the Output window. </p>
                </li>
        
            </ol>-->
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
            <br>
            <div class="feedback-box" ><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Creating%20an%20Enterprise%20Application%20Using%20Maven">请将您的反馈意见发送给我们</a></div>
            <br style="clear:both;" >
            <!-- ======================================================================================= -->
            <h2><a name="nextsteps"></a>另请参见</h2>
            <p>有关使用 NetBeans IDE 开发 Java EE 应用程序的更多信息，请参见以下资源：
            </p>
            <ul>
            <li><a href="../../docs/javaee/javaee-intro_zh_CN.html">Java EE 技术简介</a></li>
            <li><a href="../../docs/javaee/javaee-gettingstarted_zh_CN.html">Java EE 6 应用程序入门指南</a></li>
            <li><a href="../../docs/javaee/javaee-entapp-ejb_zh_CN.html">使用 EJB 3.1 创建企业应用程序</a></li>
            <li><a href="../../trails/java-ee_zh_CN.html">Java EE 和 Java Web 学习资源</a></li>
            </ul>
            <p>您可以在 <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Java EE 6 教程</a>中找到有关使用 企业 Bean 的详细信息。</p>
            <p>要发送意见和建议、获得支持以及随时了解 NetBeans IDE Java EE 开发功能的最新开发情况，请<a href="../../../community/lists/top.html">加入 nbj2ee 邮件列表</a>。</p>
    </body>
</html>
