Тестирование приложения на основе источников данных с помощью JUnit и IBM Rational Application DeveloperИсточник: IBM Developerworks Россия
В типичных корпоративных приложениях, состоящих из множества компонентов, может потребоваться модуль, который предлагает исключительно службы, относящиеся к базе данных (БД). Часто подобные специализированные модули используют источники данных, определенные в сервере приложений J2EE (например, IBM WebSphere Application Server). Поскольку эти модули находятся в контексте серверов приложений, их тестирование иногда может вызывать сложности. Один из самых частых способов их тестирования - это создание тестового приложения, которое использует компонент на базе источника данных, и последующее развертывание этого тестового приложения на сервер приложений. В таких случаях разработка тестовых приложений может потребовать от вас значительных усилий. Эта статья описывает методику тестирования компонентов на базе источников данных, которые могут развертываться на сервере приложений (например, WebSphere Application Server Version 6.0.2), с помощью JUnit на платформе IBM Rational Application Developer Version 7.0. В качестве примера компонента в этой статье используется простое приложение на базе Java™, которое предоставляет простую службу аутентификации пользователя. Статья предназначена для тех разработчиков, которые уже знакомы со средой JUnit и обладают рабочими знаниями продукта Rational Application Developer. Довольно часто компонентные приложения используют несколько компонентов, которые, в свою очередь, используют ресурсы на сервере и работают в контексте сервера. Например, набор классов Java может использовать источник данных для популярной РСУБД (реляционной системой управления БД), сконфигурированной на сервере приложений. Эти объекты Java, таким образом, используют во время работы источник данных в контексте сервера. Тестирование компонентов, которые используют ресурсы сервера, несколько затруднительно, поскольку эти компоненты находятся в контексте сервера. Подобные компоненты можно протестировать на уровне модуля одним из следующих способов.
Данная статья описывает именно последний подход. В ней рассказано, как тестировать основанный на источнике данных компонент, который можно развернуть на сервере приложений с помощью среды JUnit и платформы Rational Application Developer. Необходимое программное обеспечение Мы предполагаем, что для выполнения примеров этой статьи у вас установлено и правильно настроено следующее программное обеспечение (ПО). 1. WebSphere Application Server V6.0.2 или более поздняя версия (здесь и далее это ПО будет называться WebSphere). 2. IBM® DB2® Enterprise Server Version 9.0 или более поздняя версия (здесь и далее это ПО будет называться DB2). 3. Rational Application Developer V7.0 или более поздняя версия. 4. JUnit V3.8.1 или более поздняя версия (здесь и далее это ПО будет называться JUnit). Для получения дополнительной информации об указанном ПО см. раздел "Ресурсы". Чтобы сделать представленные в статье концепции понятнее, мы используем следующее приложение-пример, которое для хранения и извлечения данных использует систему DB2. Предположим, что приложение устанавливает подлинность пользователя, который вводит свое имя и пароль. Также предположим, что список пользовательских имен и паролей уже загружен в БД, и что приложение проверяет соответствие этим данным каждый раз, когда пользователь пытается зарегистрироваться в приложении. Теперь, в этом сценарии, компонент аутентификации должен взять в качестве входных параметров имя пользователя и пароль, проверить их соответствие данным в БД, и вернуть соответствующее сообщение о подтверждении личности пользователя. Таким образом, компонент аутентификации может использовать следующие классы (см. рис. 1):
Рисунок 1. Диаграмма класса для приложения-примера.
После создания приложения-примера мы создадим проект с клиентом приложения, который содержит контрольные примеры JUnit для приложения-примера. Этот проект клиента будет храниться на сервере, где выполняются контрольные примеры. В последующих разделах будет подробно описано, как тестировать этот пример компонента. Перед созданием примера приложения с компонентом аутентификации и тестового клиента приложения создайте необходимые объекты БД и данные в БД, а также настройте источник данных в WebSphere. Создание необходимых объектов и данных в БД Теперь мы создадим для примера БД и таблицу, которая содержит данные пользователей. 1. Для нашего примера создайте в DB2 БД под названием SAMPLEDB . 2. Создайте в ней таблицу под названием SAMPLEUSER . Это делается с помощью команды, показанной в листинге 1. Листинг 1. Создание таблицы для упражнений.
3. Добавьте в таблицу данные пользователя, как показано в листинге 2. Листинг 2. Создание данных для упражнений.
Настройка источника данных для DB2 в WebSphere Application Server Процедуру настройки источника данных в WebSphere для БД, созданной нами в DB2, можно посмотреть в WebSphere InfoCenter. Подробнее об источниках данных в WebSphere можно узнать в разделе "Ресурсы". Тестирование приложения-примера Теперь, когда мы кратко описали шаги и определили приложение, необходимо выполнить следующие задачи, чтобы, наконец, протестировать наш пример. 1. Создание приложения-примера. 2. Создание проекта для тестового клиента приложения. 3. Настройка ресурсов для проекта клиента. 4. Создание контрольных примеров JUnit для приложения. 5. Создание рабочей конфигурации для проекта клиента приложения. Вам не нужно создавать ранее описанный компонент аутентификации. 1. Откройте Rational Application Developer и создайте новый Java-проект под названием SampleDataSourceApp. 2. Создайте два пакета с названиями com.ibm.datasource.sample и com.ibm.datasource.sample.db. Они будут размещаться в папке для исходных кодов проекта SampleDataSourceApp. 3. Создайте классы User.java, SampleDataSource.java и Authenticator.java, как показано в листингах с 3 по 5.
Листинг 5. SampleDataSource.java
Модель должна выглядеть аналогично рисунку 2.
Создание проекта для клиента приложения В предыдущем разделе мы создали компонент аутентификации, где метод isAuthentic() в классе Authenticator вызывает экземпляр класса User и проверяет данные, введенные пользователем, на соответствие данным в БД. Теперь код для проверки подлинности готов, так что в этом разделе мы теперь создадим проект для тестового клиента. 1. Перейдите в меню New > Project > Application client project (Создать > Проект > Проект для клиента приложения). На странице модуля клиента приложения (Application client module) введите нужные данные, как показано на рис. 3. Рисунок 3. Модуль клиента приложения.
1. Нажмите Next ("Далее"). На странице данных проекта (Project Facets) оставьте все значения, установленные по умолчанию, как показано на рис. 4.
1. Нажмите Next ("Далее"). Уберите флажок с опции Create a default main class ("Создать класс main по умолчанию"), как показано на рис. 5. Рисунок 5. Модуль клиента приложения. 1. Нажмите Finish ("Готово"). Настройка ресурсов для проекта клиента приложения Вы создали приложение-пример и проект для клиента приложения, который будет использоваться для тестирования приложения-примера. В этом разделе мы настроим необходимые ресурсы для проекта клиента, чтобы он мог содержать серверные ресурсы. 1. В представлении Project Explorer раскройте проект SampleDataSourceAppTest и дважды щелкните мышью дескриптор развертывания. Выберите закладку References ("Ссылки"), как показано на рис. 6. Рисунок 6. Модуль клиента приложения. ]
1. Нажмите Add ("Добавить"). Выберите опцию Resource reference ("Ссылки на ресурсы"), как показано на рис. 7. Рисунок 7. Добавление ссылок на ресурсы.
1. Нажмите Next ("Далее"). 2. Внесите данные следующим образом (см. рис. 8): o Name: SampleDataSource; o Type: javax.sql.DataSource; o Authentication: Container; o Sharing scope: Shareable; Description: Sample data source.
1. Нажмите Finish ("Готово"). В разделе JAAS login information выберите опцию Use default method ("Использовать метод по умолчанию"). Кроме того, сделайте псевдоним для аутентификации таким же, как тот псевдоним, который вы создали при определении источника данных в WebSphere (как показано на рис. 9). Рисунок 9. Настройка элементов аутентификации.
1. Сохраните дескриптор развертывания. Создание контрольных примеров JUnit для приложения В этом разделе мы добавим контрольные примеры JUnit для приложения-примера. Создайте пакет com.ibm.datasource.sample.test в папке appClientModule, как показано на рис. 10. Рисунок 10. Создание пакета для тестов JUnit. Щелкните на пакете правой кнопкой мыши и выберите пункт меню New > Other > JUnit Test Case (Создать > Другое > Контрольный пример JUnit). Появится экран, показанный на рис. 11. Рисунок 11. Контрольный пример JUnit.
1. В нижней части диалогового окна, показанного на рис. 11, мастер попросит вас добавить библиотеки JUnit, щелкнув по ссылке Click here ("Щелкните здесь"). Щелкните ссылку и добавьте библиотеки JUnit в проект для клиента приложения. 2. Введите UserAuthenticationTest в поле Name. Это будет название контрольного примера. 3. Добавьте к тестовым классам код, показанный в листинге 6. Листинг 6. UserAuthenticationTest
Тестовый класс содержит два теста: один для аутентификации правильного пользователя, а другой - для аутентификации пользователя с неправильными указанными данными. 6. В проектеSampleDataSourceAppTest создайте папку lib. Затем экспортируйте проект SampleDataSourceApp в архивный файл Java™ (JAR), расположенный в папке lib. 7. Добавьте этот файл JAR в путь сборки проекта SampleDataSourceAppTest. 8. Запустите сборку проекта. Теперь мы создадим набор тестов. Щелкните правой кнопкой мыши на пакете com.ibm.datasource.sample.test и выберите пункт меню New > Other > JUnit Test Suite (Создать > Другое > Набор тестов JUnit). Появится диалоговое окно, показанное на рис. 12. Рисунок 12. Набор тестов JUnit.
6. Нажмите Finish ("Готово"). 7. Проект для клиента приложения требует наличия обязательного класса main, который содержит стандартный для Java выполняемый метод main. Сейчас мы добавим метод main в класс AllTests.java. Добавьте метод main() к классу AllTests.java, как показано на рис. 7.
12. Теперь сделайте AllTests.java классом main для проекта клиента приложения. Снова откройте дескриптор развертывания для проекта клиента приложения. В закладке Overview отредактируйте поле Main Class таким образом, чтобы оно указывало на класс AllTests.java, как показано на рис. 13. Рисунок 13. Настройка класса Main.
12. Сохраните дескриптор развертывания. Создание рабочей конфигурации для клиента приложения. В предыдущих разделах вы в Rational Application Developer создали приложение-пример и проект для тестового клиента приложения. Вы также создали два теста JUnit в контрольном примере и добавили в проект для тестового клиента приложения серверные ресурсы. В этом разделе мы настроим работу проекта для тестового клиента приложения. Обычно на этом этапе нужно добавить все JAR-файлы, двоичные файлы и другие ресурсы, которые необходимы во время работы тестового клиента приложения. 1. Щелкните правой кнопкой мыши на проекте клиента приложения и выберите пункт меню Run As > Run (Выполнить как > Выполнить). Поскольку проект клиента приложения создан для WebSphere Application Server V6.0, выберите на левой панели WebSphere v6.0 App Client, как показано на рис. 14. Рисунок 14. Новая рабочая конфигурация.
1. Чтобы создать новую конфигурацию, щелкните на пиктограмме, расположенной вверху слева на экране. Задайте название конфигурации (в данном случае это "SampleDataSource App test"), как показано на рис. 15. Рисунок 15. Создание, управление и запуск конфигураций.
1. Убедитесь, что поля Enterprise application ("Корпоративное приложение") и Application client module ("Модуль клиента приложения") содержат правильные значения. Также убедитесь в том, что файл SampleDataSourceApp.jar включен в переменную окружения classpath, как показано на рис. 16. Рисунок 16. Переменная Classpath для рабочего окружения.
1. Кроме того, добавьте в переменную classpath рабочей конфигурации JAR-файлы драйверов для DB2. 2. Для сохранения настроек конфигурации щелкните Apply ("Применить"). В следующем разделе мы запустим тесты. Запуск контрольных примеров JUnit для тестирования приложения-примера Теперь, когда вы полностью завершили конфигурацию, необходимую для проекта тестового клиента приложения, мы запустим этот клиент, чтобы он запустил все тесты JUnit. 1. Откройте представление Servers ("Серверы"). Для этого в рабочей области Rational Application Developer выберите пункты меню Window > Show View > Other > Server > Servers (Окно > Показать представление > Другое > Сервер > Серверы). Запустите WebSphere. Для этого в представлении Servers щелкните правой кнопкой мыши строку WebSphere Application Server v6.0, как показано на рис. 17. Рисунок 17. Представление Servers.
1. Теперь, после запуска WebSphere, щелкните правой кнопкой мыши проект для клиента приложения и выберите пункты меню Run As > Run. Выберите конфигурацию, которую вы настроили в предыдущем разделе, как показано на рис. 18. Рисунок 18. Выбор рабочей конфигурации.
1. Щелкните Run, чтобы запустить тесты JUnit. Результаты выполнения теста должны появиться на консоли, как показано на рис. 19. |