Тестування програми на основі джерел даних за допомогою JUnit і IBM Rational Application Developer, Різне, Програмування, статті

У типових корпоративних додатках, що складаються з безлічі компонентів, може знадобитися модуль, який пропонує виключно служби, пов’язані з базі даних (БД). Часто подібні спеціалізовані модулі використовують джерела даних, визначені в сервері додатків 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. Створення таблиці для вправ.







               


CONNECT TO SAMPLEDB;


CREATE TABLE SAMPLEUSER (


  USERNAME VARCHAR (50) NOT NULL,


  PASSWORD VARCHAR (20) NOT NULL


);


CONNECT RESET;



3. Додайте в таблицю дані користувача, як показано в лістингу 2.


Лістинг 2. Створення даних для вправ.







               


CONNECT TO SAMPLEDB;


INSERT INTO SAMPLEUSER (USERNAME, PASSWORD) VALUES (“Mohan”,”mohan”);


Налаштування джерела даних для 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.


Лістинг 3. User.java







               


package com.ibm.datasource.sample;


public class User {


  private String userName;


  private String password;


  public User() {}


  public User(String name, String pwd) {


    userName = name;


    password = pwd;


  }


  public String getUserName() { return userName; }


  public String getPassword() { return password; }


  public void setUserName(String userName) { this.userName = userName; }


  public void setPassword(String password) { this.password = password; }


}




Лістинг 4. Authenticator.java







               


package com.ibm.datasource.sample;


import java.sql.Connection;


import java.sql.ResultSet;


import java.sql.Statement;


import com.ibm.datasource.sample.db.SampleDataSource;


public class Authenticator {


  public static boolean isAuthentic(User user) {


    boolean authentic = false;


   


    try {


      SampleDataSource sampleDataSource = SampleDataSource.getDataSource();             


      Connection connection = sampleDataSource.getConnection();                                      


      Statement statement = connection.createStatement();                                  


      String sql = “SELECT count(*) AS count FROM SAMPLEUSER WHERE username=””


        + user.getUserName() + “” and password=”” + user.getPassword() + “””;                                        


      ResultSet resultSet = statement.executeQuery(sql);               


      


      if(resultSet != null) {


        if(resultSet.next()) {


          int count = resultSet.getInt(“count”);


          if(count > 0) { authentic = true; }


        }


      }


    } catch(Exception e) { e.printStackTrace(); }


    return authentic;


  }


}



Лістинг 5. SampleDataSource.java







               


package com.ibm.datasource.sample.db;


import java.sql.Connection;


import java.sql.SQLException;


import javax.naming.InitialContext;


import javax.naming.NamingException;


import javax.sql.DataSource;


public class SampleDataSource {


  public static final String resourceRefName=”jdbc/SampleDataSource”;


  private static SampleDataSource sampleDataSource = null;      


  private DataSource dataSource = null;                   


  protected SampleDataSource() {}     


  private void setupDataSource() throws SQLException {


    try {


      InitialContext ctx = new InitialContext();


      dataSource = (DataSource)ctx.lookup(resourceRefName);


    } catch(NamingException e) { e.printStackTrace(); }


  }


  public static synchronized SampleDataSource getDataSource() throws SQLException {


    if(sampleDataSource == null) {


      try {


        sampleDataSource = new SampleDataSource();


        sampleDataSource.setupDataSource();


      } catch(SQLException e) { e.printStackTrace(); }


    }


    return sampleDataSource;


  }


  public Connection getConnection() throws SQLException        {


    return dataSource.getConnection();


  }


}


Модель має виглядати аналогічно малюнку 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.


Рисунок 8. Посилання на ресурс.


 


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







                


package com.ibm.datasource.sample.test;


import com.ibm.datasource.sample.Authenticator;


import com.ibm.datasource.sample.User;


import junit.framework.TestCase;


public class UserAuthenticationTest extends TestCase {


  public void testAuthenticUser() {


    User user = new User(“Mohan”,”mohan”);


    assertTrue(Authenticator.isAuthentic(user));


  }


  public void testNonAuthenticUser() {


/ / Пароль для користувача “Mohan” невірний


    User user = new User(“Mohan”,””);                                       


    assertFalse(Authenticator.isAuthentic(user));      


  }


}


Тестовий клас містить два тести: один для аутентифікації правильного користувача, а інший – для аутентифікації користувача з неправильними зазначеними даними.


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.


Лістинг 7. AllTests.java







               


package com.ibm.datasource.sample.test;


public class AllTests {


  public static void main(String[] av) { 


    junit.textui.TestRunner.run(UserAuthenticationTest.class);


  }


}


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.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*