| <!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 Development Kit (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>GlassFish Server 3.1.1のインストーラは、Java EEバンドル版をダウンロードした場合に含まれています。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> (<a href="http://www.sonatype.com/books/maven-book/reference/public-book.html" target="_blank">Maven: The Definitive Guide</a>)</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プロジェクトである場合は、「オプション」ウィンドウでMavenの構成設定を確認します。このチュートリアルを完了するには、ローカル・システムにMavenがインストールされている必要があります。NetBeans IDE 7.0以降では、MavenはIDEにバンドルされており、IDEをインストールするときにインストールされます。以前のバージョンのIDEを使用している場合は、<a href="http://maven.apache.org/">Mavenのサイト</a>からインストーラをダウンロードできます。</p> |
| |
| <ol> |
| <li>IDEで「オプション」ウィンドウを開きます。</li> |
| <li>「オプション」ウィンドウの「その他」カテゴリを選択して、「Maven」タブをクリックします。</li> |
| <li>「Mavenのホーム」が指定されていることを確認します。 |
| <p>IDEにバンドルされているMavenバージョンを使用することも、ローカルのMavenインストール(2.0.9以降が必要)の場所を指定することもできます。</p></li> |
| <li>ローカルMavenリポジトリの場所が正しいことを確認します。</li> |
| <li>「OK」をクリックして「オプション」ウィンドウを閉じます。</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リモート・リポジトリの索引を更新しておきます。「オプション」ウィンドウの「Maven」タブでは、IDEが更新を確認する頻度を構成できます。Mavenリポジトリ・ブラウザでは、更新の有無を即時確認でき、ローカルおよびリモートのMavenリポジトリを調べることができます。</p> |
| |
| <ol> |
| <li>「ウィンドウ」>「その他」>「Mavenリポジトリ・ブラウザ」を選択します。</li> |
| <li>「Mavenリポジトリ・ブラウザ」ウィンドウの上部にある索引を更新(<img alt="索引を更新ボタン" src="../../../images_www/articles/72/javaee/maven-testing/maven-refreshrepo.png" title="索引を更新ボタン">)をクリックします。</li> |
| </ol> |
| |
| <p>「索引を更新」をクリックすると、各Mavenリモート・リポジトリの最新の索引の有無が確認され、ダウンロードされます。索引は、リポジトリ内に存在するアーティファクトの現在の状態を示し、アプリケーションで使用できるアーティファクトへの参照を提供するために使用されます。デフォルトでは、アーティファクトが明示的に要求されないかぎり、リポジトリからアーティファクトはダウンロードされません。</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>この項では、エンティティ・クラスとそのエンティティ・クラスにアクセスするセッションBeanを含む単純なWebアプリケーションを作成します。</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>メイン・メニューから「ファイル」>「新規プロジェクト」([Ctrl]-[Shift]-[N]、Macの場合は[⌘]-[Shift]-[N])を選択して新規プロジェクト・ウィザードを開きます。</li> |
| <li>「Maven」カテゴリから「Webアプリケーション」を選択します。「次」をクリックします。</li> |
| <li>プロジェクト名を<strong>mavenwebtestapp</strong>にし、プロジェクトの場所を設定します。「次」をクリックします。</li> |
| <li>「サーバー」ドロップダウン・リストで「GlassFish Server 3.1.1」を選択します。</li> |
| <li>「Java EEバージョン」ドロップダウン・リストで「Java EE 6 Web」を選択します。「終了」をクリックします。</li> |
| </ol> |
| <p>「終了」をクリックすると、IDEによってWebアプリケーションが作成され、プロジェクトが「プロジェクト」ウィンドウで開きます。</p> |
| |
| <img alt="生成されたプロジェクトを示す「プロジェクト」ウィンドウ" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-projects.png" title="生成されたプロジェクトを示す「プロジェクト」ウィンドウ"> |
| |
| <p>「プロジェクト」ウィンドウでプロジェクト・ノードを展開すると、<tt>javaee-web-api-6.0</tt> JARがプロジェクトの依存性として一覧表示され、JDK 1.6がJava依存性として一覧表示されていることがわかります。IDEによってプロジェクトのPOM (<tt>pom.xml</tt>)が生成され、そのファイルが「プロジェクト・ファイル」ノードの下に一覧表示されます。 |
| </p> |
| |
| <a name="Exercise_1b"></a> |
| <h3>エンティティ・クラスの作成</h3> |
| <p>この課題では、新規ファイル・ウィザードを使用してエンティティ・クラスを作成します。エンティティ・クラスを作成するときは、ウィザードで<tt>jdbc/sample</tt>データ・ソースを選択します。サーバーのインストール時に<tt>jdbc/sample</tt>データ・ソースが登録されたため、新しいデータ・ソースを作成または登録する必要はありません。 |
| </p> |
| |
| <p class="notes"><strong>注意:</strong>新しいデータソースを作成したり、異なるデータソースを使用する場合は、埋込みコンテナを使用してアプリケーションをテストする前に、そのデータソースをサーバーに登録する必要があります。埋込みコンテナを使用してアプリケーションをテストするときは、GlassFishサーバー・インスタンスにデプロイするときと同じように、データ・ソースがIDEによって自動的には登録されません。 |
| </p> |
| |
| <ol> |
| <li>プロジェクト・ノードを右クリックし、「新規」>「エンティティ・クラス」を選択します。 |
| <p>または、メイン・メニューから「ファイル」>「新規ファイル」([Ctrl]-[N]、Macの場合は[⌘]-[N])を選択し、「持続性」カテゴリで「エンティティ・クラス」を選択することもできます。</p></li> |
| <li>「クラス名」に「<strong>MyEntity</strong>」と入力します。</li> |
| <li>「パッケージ」として「<tt>com.mycompany.mavenwebtestapp</tt>」を選択し、「主キー型」を<strong><tt>int</tt></strong>に設定します。</li> |
| <li>「持続性ユニットを作成」が選択されていることを確認します。「次」をクリックします。</li> |
| <li>「データ・ソース」ドロップダウン・リストで「<strong>jdbc/sample</strong>」を選択します。</li> |
| <li>「Java Transaction APIを使用」が選択されていることを確認し、「表生成の方針」として「ドロップして作成」を選択します。「終了」をクリックします。<br /><img alt="生成されたプロジェクトを示す「プロジェクト」ウィンドウ" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-pu.png" title="生成されたプロジェクトを示す「プロジェクト」ウィンドウ"> |
| |
| <p>「終了」をクリックすると、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>ソース・エディタで、クラスにprivateフィールド<tt>name</tt>を追加します。 |
| <pre class="examplecode">private String name;</pre> |
| </li> |
| <li>エディタ内を右クリックし、「コードを挿入」ポップアップ・メニューで「取得メソッドおよび設定メソッド」を選択して<tt>name</tt>フィールドの取得メソッドと設定メソッドを生成します。 </li> |
| <li>以下のメソッドを追加します。 |
| <pre class="examplecode"> |
| public MyEntity(int id) { |
| this.id = id; |
| name = "Entity number " + id + " created at " + new Date(); |
| }</pre> |
| </li> |
| <li>MyEntity表のすべてのレコードを検索する名前付きSQL問合せを作成するために、以下の<tt>@NamedQueries</tt>および<tt>@NamedQuery</tt>注釈(太字部分)を追加します。 |
| <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>デフォルト・コンストラクタを作成</strong>」ヒントを選択します。<br/><img alt="生成されたプロジェクトを示す「プロジェクト」ウィンドウ" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-createconstructor.png" title="生成されたプロジェクトを示す「プロジェクト」ウィンドウ"> |
| </li> |
| <li>インポート文を修正([Ctrl]-[Shift]-[I]、Macの場合は[⌘]-[Shift]-[I])して、<tt>javax.persistence.NamedQuery</tt>、<tt>javax.persistence.NamedQueries</tt>および<tt>java.util.Date</tt>のインポート文を追加します。変更を保存します。<br/> |
| |
| </li> |
| </ol> |
| |
| |
| <a name="Exercise_1c"></a> |
| <h3>セッションBeanの作成</h3> |
| |
| <p>この課題では、ウィザードを使用して<tt>MyEntity</tt>エンティティ・クラスのセッション・ファサードを作成します。ウィザードを使用してファサードを生成すると、エンティティ・クラスにアクセスするときによく使用される<tt>create</tt>や<tt>find</tt>などのいくつかのメソッドを含む抽象ファサードもIDEによって生成されます。次に、ファサードに2つのメソッドを追加します。 |
| </p> |
| |
| <ol> |
| <li>プロジェクト・ノードを右クリックし、「新規」>「その他」を選択します。 |
| <p>または、メイン・メニューから「ファイル」>「新規ファイル」([Ctrl]-[N]、Macの場合は[⌘]-[N])を選択して新規ファイル・ウィザードを開きます。</p></li> |
| <li>「エンタープライズJavaBeans」カテゴリで「エンティティ・クラスのセッションBean」を選択します。「次」をクリックします。</li> |
| <li>「利用可能なエンティティ・クラス」のリストから<tt>MyEntity</tt>クラスを選択し、「追加」をクリックします。「次」をクリックします。</li> |
| <li>ウィザードの「生成されるセッションBean」パネルで、デフォルトのプロパティを使用します。「終了」をクリックします。 |
| <p>「終了」をクリックすると、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<MyEntity> { |
| @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>インポートを修正して必要なインポート文を追加します。変更を保存します。<br/><img alt="生成されたプロジェクトを示す「プロジェクト」ウィンドウ" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-fiximports.png" title="生成されたプロジェクトを示す「プロジェクト」ウィンドウ"> |
| <p class="notes"><strong>注意:</strong>「すべてのインポートを修正」ダイアログ・ボックスで<strong><tt>javax.persistence.Query</tt></strong>が選択されていることを確認してください。</p> |
| </li> |
| |
| </ol> |
| </div> |
| |
| <a name="Exercise_2"></a> |
| <h2>セッションBeanテストの作成</h2> |
| <p>この項では、<tt>MyEntityFacade</tt>セッション・ファサード用のJUnitテスト・クラスを作成します。IDEによって、ファサード・クラス内の各メソッドおよび抽象ファサード内の各メソッド用のスケルトン・テスト・メソッドが生成されます。抽象ファサード内のメソッド用に生成されたテスト・メソッドに注釈を付けて、IDEとJUnitテスト・ランナーにそれらを無視するように指示します。次に、<tt>MyEntityFacade</tt>に追加した<tt>verify</tt>メソッド用のテスト・メソッドを変更します。 |
| </p> |
| |
| |
| <p>生成されたテストで、EJBコンテナのインスタンスを作成するために<tt>EJBContainer</tt>をコールするコードがIDEによって自動的に追加されることを確認します。テスト・クラスが生成されると、コールが含まれている行の左マージンに、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>「プロジェクト」ウィンドウで<tt>MyEntityFacade.java</tt>を右クリックし、「ツール」>「JUnitテストを作成」を選択します。</li> |
| <li>JUnitのバージョンとして「JUnit 4.x」を選択します。「選択」をクリックします。</li> |
| <li>「テストを作成」ダイアログ・ボックスのデフォルトのオプションを使用します。「OK」をクリックします。 |
| <p>デフォルトでは、IDEによって<tt>MyEntityFacade</tt>および<tt>AbstractFacade</tt>内の各メソッド用のテストを含むスケルトン・テスト・クラスが生成されます。IDEによってJUnit 4.10への依存性がPOMに自動的に追加されます。</li> |
| <li><tt>testVerify</tt>を除く各テスト・メソッドに<tt>@Ignore</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>GlassFish Server 3.1.1のインストールからEJBContainerを使用</strong>」を選択します。 |
| <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によってPOM内の<tt><properties></tt>要素に<tt><glassfish.embedded-static-shell.jar></tt>要素(太字部分)が追加されます。<tt><glassfish.embedded-static-shell.jar></tt>要素は、ローカルのGlassFishサーバー・インストールへのパスを識別するために使用されます。ローカル・インストールへのパスが変更された場合は、POM内のこの要素を変更する必要があります。 |
| </p> |
| <pre class="examplecode"> |
| <properties> |
| <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> |
| <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| <strong><glassfish.embedded-static-shell.jar>/Applications/NetBeans/glassfish-3.1.1/glassfish/lib/embedded/glassfish-embedded-static-shell.jar</glassfish.embedded-static-shell.jar></strong> |
| <!-- <glassfish.embedded-static-shell.jar>/Applications/NetBeans/glassfish-3.1.1/glassfish/lib/embedded/glassfish-embedded-static-shell.jar</glassfish.embedded-static-shell.jar>--> |
| </properties> |
| </pre> |
| <p>また、ローカル・インストールへのパスを参照する<tt>glassfish-embedded-static-shell</tt>への依存性もIDEによってPOMに追加されます。</p> |
| <pre class="examplecode"> |
| <dependency> |
| <groupId>org.glassfish.extras</groupId> |
| <artifactId>glassfish-embedded-static-shell</artifactId> |
| <version>3.1.1</version> |
| <scope>system</scope> |
| <systemPath>${glassfish.embedded-static-shell.jar}</systemPath> |
| </dependency> |
| </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>インポート文を修正して<tt>junit.framework.Assert</tt>を追加します。変更を保存します。</li> |
| <li>「プロジェクト」ウィンドウでプロジェクト・ノードを右クリックし、「テスト」を選択します。 </li> |
| </ol> |
| |
| <p>「テスト」を選択すると、IDEによってアプリケーションがビルドされ、ビルド・ライフサイクルのテスト・フェーズが実行されます。この単体テストは、JUnit 4.xテストの実行をサポートするsurefireプラグインを使用して実行されます。surefireプラグインの詳細は、<a href="http://maven.apache.org/plugins/maven-surefire-plugin/">http://maven.apache.org/plugins/maven-surefire-plugin/</a>を参照してください。</p> |
| |
| |
| |
| <p>テストの結果が「テスト結果」ウィンドウに表示されます。</p> |
| |
| <p>この例では、9個のテストに成功したことがわかります。「出力」ウィンドウを見ると、1個のテストのみが実行され、8個のテストがスキップされたことを確認できます。</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"></dependencies> |
| |
| <strong><reporting> |
| <plugins> |
| <plugin> |
| <groupId>org.codehaus.mojo</groupId> |
| <artifactId>cobertura-maven-plugin</artifactId> |
| <version>2.5.1</version> |
| </plugin> |
| </plugins> |
| </reporting></strong> |
| |
| <build></pre> |
| </li> |
| <li>Right-click project node and choose Code Coverage > 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&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_ja.html">Java EEテクノロジ入門</a></li> |
| <li><a href="../../docs/javaee/javaee-gettingstarted_ja.html">Java EE 6アプリケーションの開始</a></li> |
| <li><a href="../../docs/javaee/javaee-entapp-ejb_ja.html">EJB 3.1を使用したエンタープライズ・アプリケーションの作成</a></li> |
| <li><a href="../../trails/java-ee_ja.html">Java EEおよびJava Webの学習</a></li> |
| </ul> |
| <p>エンタープライズBeanの使用方法については、<a href="http://download.oracle.com/javaee/6/tutorial/doc/">Java EE 6チュートリアル</a>を参照してください。</p> |
| <p><a href="../../../community/lists/top.html">nbj2eeメーリング・リストに登録する</a>ことによって、NetBeans IDE Java EE開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。</p> |
| </body> |
| </html> |