blob: 74101185764651cb87106957d6103e6565f8d131 [file] [log] [blame]
<!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>This tutorial demonstrates how to test a simple enterprise application using IDE NetBeans and Maven archetypes. В ходе данного учебного курса вы создадите приложение уровня предприятия, содержащее класс сущности и сеансный компонент. Вы будете использовать·мастер для создания простого тестового класса для класса компонента, а затем запустите тестирование в среде IDE. Класс теста создаст экземпляр контейнера EJB, встроенного в GlassFish, для тестирования подключения к базе данных.
</p>
<p><b>Упражнения по темам руководства</b></p>
<img alt="Содержимое на этой странице применимо к IDE NetBeans 7.1" class="stamp" src="../../../images_www/articles/71/netbeans-stamp.png" title="Содержимое этой страницы применимо к IDE NetBeans 7.1">
<ul>
<li><a href="#intro">Использование Maven в среде IDE</a></li>
<li><a href="#Exercise_1">Создание приложения уровня предприятия</a>
<ul>
<li><a href="#Exercise_1a">Создание проекта веб-приложения</a></li>
<li><a href="#Exercise_1b">Создание класса сущностей</a></li>
<li><a href="#Exercise_1c">Создание сеансового компонента</a></li>
</ul>
</li>
<li><a href="#Exercise_2">Создание теста сеансного компонента</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">IDE NetBeans</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 3.1.2.2</td>
<td class="tbltd1">3.1.1</td>
</tr>
</tbody>
</table>
<p class="notes"><strong>Примечание.</strong> Программа установки для GlassFish Server 3.1.1 включена в комплект при загрузке пакета Java EE. You can install and register GlassFish as part of the IDE NetBeans installation process.</p>
<p><b>Предпосылки</b></p>
<p>Предполагается, что читатель обладает базовыми знаниями по следующим технологиям или опытом программирования с их использованием:</p>
<ul>
<li>Программирование на Java</li>
<li>IDE NetBeans</li>
</ul>
<p>Перед изучением этого учебного курса можно ознакомиться со следующей документацией:</p>
<ul>
<li><a href="http://wiki.netbeans.org/MavenBestPractices" target="_blank">Испытанные приемы для Apache Maven в IDE NetBeans</a></li>
<li><a href="http://www.sonatype.com/books/maven-book/reference/introduction.html" target="_blank">Глава 1. Введение в 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>Использование Maven в среде IDE</h2>
<p>Support for Maven is fully integrated in IDE NetBeans. Разработка проекта, в котором используется платформа Maven, практически идентична случаю разработки с использованием Ant. Однако в случае Maven имеются некоторые отличия, касающиеся способа сборки проектов и работы с зависимостями. Советы, приведенные ниже, могут помочь избегнуть ряда проблем при первом создании приложения Maven.</p>
<p class="tips"><strong>Проверка параметров Maven</strong></p>
<div class="indent">
<p>Если это ваш первый проект Maven, проверьте параметры настройки Maven в окне &quot;Параметры&quot;. Для работы с этим учебным курсом необходимо установить Maven на локальный компьютер. Starting with IDE NetBeans 7.0, Maven is bundled with the IDE and installed when you install the IDE. В случае использования более ранней версии среды IDE можно загрузить программу установки с <a href="http://maven.apache.org/">веб-сайта Maven</a>.</p>
<ol>
<li>Откройте окно &quot;Параметры&quot; в среде IDE.</li>
<li>Выберите в окне &quot;Параметры&quot; категорию &quot;Дополнительно&quot; и перейдите на вкладку &quot;Maven&quot;.</li>
<li>Подтвердите указание домашней страницы Maven.
<p>Можно использовать версию Maven, входящую в комплект среды IDE, либо указать местоположение локальной установки Maven (требуется версия 2.0.9 или более поздняя).</p></li>
<li>Проверьте корректность адреса к локальному репозиторию Maven.</li>
<li>Для закрытия окна &quot;Параметры&quot; нажмите кнопку &quot;ОК&quot;.</li>
</ol>
<p class="notes"><strong>Примечания.</strong> Если проект Maven ранее не создавался в среде IDE, сначала необходимо активировать в среде IDE модуль Maven. Это можно сделать, выбрав архетип проекта Maven в мастере создания проекта. После выбора архетипа среда IDE автоматически активирует модуль. Не требуется завершать работу мастера для активации Maven в среде IDE.</p>
</div>
<p class="tips"><strong>Обновите репозитории Maven</strong></p>
<div class="indent">
<p>Локальные и удаленные репозитории Maven используются для автозавершения кода, а также при построении проектов. Обновление индексов удаленных репозиториев Maven требуется для обеспечения немедленной доступности всех артефактов, которые могут потребоваться при разработке проекта. Частоту проверки наличия обновлений можно настроить на вкладке &quot;Maven&quot; в окне &quot;Параметры&quot; среды IDE. Для непосредственной проверки наличия обновлений и обзора локальных и удаленных репозиториев Maven используется браузер репозиториев Maven.</p>
<ol>
<li>Выберите пункт меню &quot;Окно &gt; Прочее &gt; Браузер репозиториев Maven&quot;.</li>
<li>Щелкните 'Обновить индексы' (&nbsp;<img alt="Кнопка 'Обновить индексы'" src="../../../images_www/articles/72/javaee/maven-testing/maven-refreshrepo.png" title="Кнопка 'Обновить индексы'"> &nbsp;) в верхней части окна браузера репозитория Maven.</li>
</ol>
<p>При нажатии кнопки &quot;Обновить индексы&quot; в среде IDE выполняется проверка и загрузка самого свежего индекса для каждого из настроенных удаленных репозиториев Maven. Индекс представляет текущее состояние артефактов, расположенных в репозитории, и используется для предоставления ссылок на артефакты, доступных для использования в приложении. По умолчанию артефакты не загружаются из репозитория автоматически без явно обозначенной необходимости в них.</p>
<p class="notes"><strong>Примечание.</strong> Размер индексов довольно велик и обновление всех индексов может занять значительное время.</p>
</div>
<p class="tip">Дополнительные сведения об использовании Maven в IDE NetBeans см. в разделе <a href="https://netbeans.org/kb/docs/java/maven-hib-java-se.html#02">Настройка Maven</a> в учебном курсе <a href="https://netbeans.org/kb/docs/java/maven-hib-java-se.html">Создание приложения Swing Maven с помощью Hibernate</a>, а также в <a href="http://wiki.netbeans.org/MavenBestPractices" target="_blank">Испытанные приемы для Apache Maven в IDE NetBeans</a>.</p>
<a name="Exercise_1"></a>
<!--Exercise 1: -->
<h2>Создание приложения уровня предприятия</h2>
<p>В данном разделе вы создадите простое веб-приложение, содержащее класс сущности и сеансный компонент, имеющий доступ к классу сущности.</p>
<div class="indent">
<a name="Exercise_1a"></a>
<h3>Создание проекта веб-приложения</h3>
<p>В данном упражнении используется мастер создания проекта для создания веб-приложения Java EE 6 из архетипа Maven. После создания проекта с помощью мастера укажите сервер GlassFish Server 3.1.1 в качестве целевого.</p>
<ol>
<li>Выберите 'Файл' > 'Новый проект' (Ctrl-Shift-N; ⌘-Shift-N в Mac) в главном меню, чтобы открыть мастер создания проектов.</li>
<li>Выберите &quot;Веб-приложение&quot; в категории Maven. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Дайте проекту имя <strong>mavenwebtestapp</strong> и задайте местоположение проекта. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Выберите выбирать GlassFish Server 3.1.1 из раскрывающегося списка &quot;Сервер&quot;.</li>
<li>Выберите выбирать Java EE 6 Web из раскрывающегося списка &quot;Версия Java EE&quot;. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<p>После нажатия кнопки &quot;Готово&quot; среда IDE создает веб-приложение и открывает проект в окне &quot;Проекты&quot;.</p>
<img alt="В окне 'Проекты' отображаются созданные проекты" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-projects.png" title="В окне 'Проекты' отображаются созданные проекты">
<p>При развертывании узла проекта в окне &quot;Проекты&quot; можно увидеть, что файл JAR <tt>javaee-web-api-6.0</tt> указан в списке как зависимость проекта, а JDK 1.6 указан как зависимость Java. Среда IDE создала файл POM проекта <tt>pom.xml</tt>, и этот файл указан в списке в узле &quot;Файлы проекта&quot;.
</p>
<a name="Exercise_1b"></a>
<h3>Создание класса сущности</h3>
<p>В данном упражнении будет использован мастер создания файла для создания класса сущности. После создания класса сущности выберите в мастере источник данных <tt>jdbc/sampl</tt>. Нет необходимости создавать или регистрировать новый источник данных, поскольку источник данных <tt>jdbc/sample</tt> был зарегистрирован при установке сервера.
</p>
<p class="notes"><strong>Примечание.</strong> Если необходимо создать новый источник данных или использовать другой источник данных, источник данных должен быть зарегистрирован на сервере до тестирования приложения, используя встроенный контейнер. При тестировании приложения с помощью встроенного контейнера среда IDE не зарегистрирует источник данных, в отличие от развертывания на экземпляре сервер GlassFish.
</p>
<ol>
<li>Щелкните узел проекта правой кнопкой мыши и выберите команду &quot;Создать&quot; &gt; &quot;Класс сущности&quot;.
<p>В качестве альтернативы можно использовать 'Файл' > 'Создать файл' (Ctrl-N; ⌘-N в Mac) в главном меню и выбрать 'Класс сущности' в категории 'Сохраняемость'.</p></li>
<li>Введите <strong>MyEntity</strong> для имени класса.</li>
<li>Выберите <tt>com.mycompany.mavenwebtestapp</tt> в качестве пакета и установите тип первичного ключа <strong><tt>int</tt></strong>.</li>
<li>Подтвердите выбор &quot;Создать единицу сохранения состояния&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Выберите <strong>jdbc/sample</strong> из раскрывающегося списка &quot;Источник данных&quot;.</li>
<li>Подтвердите выбор &quot;Использовать интерфейсы API транзакций Java&quot; и выберите &quot;Удалить и создать&quot; в качестве стратегии создания таблицы. Нажмите кнопку &quot;Завершить&quot;.<br /> <img alt="В окне 'Проекты' отображаются созданные проекты" class="margin-around b-all" src="../../../images_www/articles/72/javaee/maven-testing/maven-testing-pu.png" title="В окне 'Проекты' отображаются созданные проекты">
<p>После нажатия кнопки &quot;Готово&quot; среда 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>имя</tt>.
<pre class="examplecode">private String name;</pre>
</li>
<li>Правой кнопкой мыши щелкните редактор и выберите &quot;Методы получения и установки&quot; во всплывающем меню &quot;Вставка кода&quot; (Alt-Insert; Ctrl-I на Mac), чтобы создать метод получения и установки для поля <tt>имя</tt>. </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>Создать конструктор по умолчанию</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; ⌘-Shift-I в Mac) для добавления операторов импорта для <tt>javax.persistence.NamedQuery</tt>, <tt>javax.persistence.NamedQueries</tt> и <tt>java.util.Date</tt>. Сохраните изменения. <br />
</li>
</ol>
<a name="Exercise_1c"></a>
<h3>Создание компонента сеанса</h3>
<p>В данном упражнении для создания сеансного фасада для класса сущности <tt>MyEntity</tt> используется мастер. При использовании мастера для создания фасада среда IDE также создает абстрактный фасад, содержащий такие методы. как <tt>create</tt> и <tt>find</tt>, широко используемые при доступе к классам сущностей. Затем к фасаду добавляются два метода.
</p>
<ol>
<li>Щелкните узел проекта правой кнопкой мыши и выберите команду &quot;Создать&quot; &gt; &quot;Другие&quot;.
<p>В качестве альтернативы можно использовать 'Файл' > 'Создать файл' (Ctrl-N; ⌘-N в Mac) в главном меню, чтобы открыть мастер создания файлов.</p></li>
<li>Выберите сеансные компоненты для классов сущностей в категории Enterprise JavaBeans. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Выберите класс <tt>MyEntity</tt> из списка доступных классов сущностей и нажмите кнопку &quot;Добавить&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Используйте свойства по умолчанию на панели мастера &quot;Созданные сеансные компоненты&quot;. Нажмите кнопку &quot;Завершить&quot;.
<p>При нажатии кнопки &quot;Готово&quot; среда IDE создает <tt>AbstractFacade.java</tt> и <tt>MyEntityFacade.java</tt> в пакете <tt>com.mycompany.mavenwebtestapp</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>Исправьте операторы импорта, чтобы добавить импорт всего, что нужно. Сохраните изменения. <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>Создание теста сеансного компонента</h2>
<p>В данном разделе создается тестовый класс для сеансного фасада <tt>MyEntityFacade</tt>. Среда IDE создаст схему тестовых методов для каждого метода в классе фасада, а также для каждого метода в абстрактном фасаде. Будут аннотированы тестовые методы, созданные для методов в абстрактном фасаде, чтобы указать среде IDE и средству тестирования JUnit игнорировать их. Затем будет изменен тестовый метод для метода<tt>verify</tt>, добавленного в <tt>MyEntityFacade</tt>.
</p>
<p>В созданных тестах вы увидите, что среда IDE автоматически добавляет код, вызывающий <tt>EJBContainer</tt>, для создания экземпляра контейнера EJB. При создании класса теста строка, содержащая вызов, включает подсказку на левой границе о том, что API Java EE не находится на пути к классу, и рекомендацию по использованию EJBContainer из установки GlassFish Server 3.1. Эта подсказка изменит 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> в окне &quot;Проекты&quot; и выберите &quot;Сервис&quot; &gt; &quot;Создать тесты JUnit&quot;.</li>
<li>В качестве версии JUnit выберите JUnit 4.x. Нажмите кнопку &quot;Выбрать&quot;.</li>
<li>В диалоговом окне &quot;Создать тесты&quot; используйте параметры по умолчанию. Нажмите кнопку &quot;ОК&quot;.
<p>По умолчанию среда IDE создает скелет тестового класса, содержащий тесты для каждого из методов в <tt>MyEntityFacade</tt> и <tt>AbstractFacade</tt>. Среда IDE автоматически добавляет к файлу POM зависимость от JUnit 4.10.</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>Использовать EJBContainer из установки GlassFish Server 3.1.1</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 добавляет элемент <tt>&lt;glassfish.embedded-static-shell.jar&gt;</tt> (выделено жирным) к элементу<tt>&lt;properties&gt;</tt> в файл POM. Элемент <tt>&lt;glassfish.embedded-static-shell.jar&gt;</tt> используется для определения пути к локальной установке сервера GlassFish. В случае изменения пути к локальной установке потребуется изменить этот элемент в файле 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 также добавляет в файл POM зависимость от <tt>glassfish-embedded-static-shell</tt>, ссылающуюся на путь к локальной установке.</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>Исправьте выражения импорта для добавления <tt>junit.framework.Assert</tt>. Сохраните изменения.</li>
<li>Правой кнопкой мыши щелкните узел проекта в окне &quot;Проекты&quot; и выберите &quot;Тест&quot;. </li>
</ol>
<p>После выбора пункта &quot;Тест&quot; среда 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>Результаты теста отображаются в окне &quot;Результаты теста&quot;.</p>
<p>В данном примере можно увидеть девять результатов. Если посмотреть на окно вывода, можно увидеть, что был запущен только один тест, и восемь было пропущено.</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>For more information about using IDE NetBeans to develop Java EE applications, see the following resources:
</p>
<ul>
<li><a href="../../docs/javaee/javaee-intro_ru.html">Введение в технологию Java EE </a></li>
<li><a href="../../docs/javaee/javaee-gettingstarted_ru.html">Начало работы с приложениями для Java EE</a></li>
<li><a href="../../docs/javaee/javaee-entapp-ejb_ru.html">Создание приложения уровня предприятия с помощью EJB 3.1</a></li>
<li><a href="../../trails/java-ee_ru.html">Учебная карта по Java EE и Java Web</a></li>
</ul>
<p>Дополнительные сведения по использованию компонентов уровня предприятия приведены в <a href="http://download.oracle.com/javaee/6/tutorial/doc/">учебном курсе по Java EE 6</a>.</p>
<p>To send comments and suggestions, get support, and keep informed on the latest developments on the IDE NetBeans Java EE development features, <a href="../../../community/lists/top.html">join the nbj2ee mailing list</a>.</p>
</body>
</html>