T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию книги "Среда разработки Eclipse 4: Руководство разработчика"

Отладка, тестирование и рефакторинг кода

Тестирование Java-кода

Eclipse-плагин Java development toolkit (JDT) обеспечивает поддержку платформы тестирования JUnit (http://www.junit.org/), позволяющей создавать как отдельные тесты для тестирования результатов, возвращаемых отдельными методами в ответ на ввод различных данных, так и наборы тестов, обеспечивающих тестирующее окружение для Java-классов. Тестирование с помощью платформы JUnit основано на оперировании утверждениями для проверки ожидаемых результатов, при этом JUnit дает возможность предварительно выполнять необходимую инициализацию и устанавливать общие для всех тестов данные.

В качестве примера создадим Java-проект, содержащий класс, представляющий данные, и протестируем его.

Откроем среду Eclipse Standard и в меню File выберем команду New | Other | Java | Java Project, нажмем кнопку Next, в поле Project name: введем имя проекта и нажмем кнопку Finish.

В окне Package Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | Java | Class, нажмем кнопку Next, в поле Package: введем имя пакета data, в поле Name: введем имя класса Data и нажмем кнопку Finish.

В окне редактора дополним код класса data.Data:

package data;

public class Data {

private String str;

public String getData() {

return str;

}

public void setData(String str) {

this.str = str;

}

public String addData(String input){

String add=str.concat(input);

this.setData(add);

return str; }}

Класс Data имеет свойство, методы доступа к свойству и метод изменения значения свойства.

В окне Package Explorer нажмем правой кнопкой мышки на узле Data.java и в контекстном меню выберем команду New | Other | Java | JUnit | JUnit Test Case, нажмем кнопку Next – появится мастер создания класса тестов (рис. 2.17).

Рис. 2.17. Мастер создания класса JUnit-тестов

Выбор переключателя setUpBeforeClass() мастера JUnit Test Case обеспечивает генерацию метода, маркированного аннотацией @BeforeClass, которая определяет вызов данного метода средой выполнения перед вызовом всех остальных методов JUnit-класса. Такой метод используется для выполнения инициализации теста, например, для соединения с базой данных.

Выбор переключателя tearDownAfterClass() мастера JUnit Test Case обеспечивает генерацию метода, маркированного аннотацией @AfterClass, которая определяет вызов данного метода средой выполнения после вызова всех остальных методов JUnit-класса. Такой метод используется для освобождения ресурсов, задействованных в методе, который маркирован аннотацией @BeforeClass.

Выбор переключателя setUp() мастера JUnit Test Case обеспечивает генерацию метода, маркированного аннотацией @Before, которая определяет вызов данного метода средой выполнения перед вызовом всех остальных методов, маркированных аннотацией @Test. Такой метод используется для создания объектов, общих для всех тестов.

Выбор переключателя tearDown() мастера JUnit Test Case обеспечивает генерацию метода, маркированного аннотацией @After, которая определяет вызов данного метода средой выполнения после вызова всех остальных методов, маркированных аннотацией @Test. Такой метод используется для освобождения ресурсов, задействованных в методе, который маркирован аннотацией @Before.

Отметим галочкой переключатель setUp() и нажмем кнопку Next – появится окно выбора тестируемых методов, для которых будут сгенерированы методы с аннотацией @Test. Галочками отметим методы getData() и addData() класса Data и нажмем кнопку Finish (рис. 2.18).

Рис. 2.18. Выбор тестируемых методов

После нажатия кнопки Finish появится окно запроса добавления в путь приложения библиотек JUnit (рис. 2.19).

Рис. 2.19. Окно запроса добавления в путь приложения библиотек JUnit

Нажмем кнопку OK. В результате в пакете data будет создан JUnit-класс DataTest с тремя методами, маркированными аннотациями @Before и @Test.

Дополним код класса DataTest:

package data;

import org.junit.Assert;

import org.junit.Before;

import org.junit.Test;

public class DataTest {

Data data;

@Before

public void setUp() throws Exception {

data=new Data();

data.setData("MyData");

}

@Test

public void testGetData() {

Assert.assertEquals("MyData", data.getData());

}

@Test

public void testAddData() {

data.addData("Add");

Assert.assertEquals("MyDataAdd", data.getData());

}}

В методе setUp() создается экземпляр тестируемого класса Data и устанавливается значение его свойства str.

В методе testGetData() строка, возвращаемая методом getData() сравнивается с ожидаемой строкой.

В методе testAddData() значение свойства str класса Data изменяется, и новое значение сравнивается с ожидаемым значением.

Для запуска теста в окне Package Explorer нажмем правой кнопкой мышки на узле DataTest.java и в контекстном меню выберем команду Run As | JUnit Test. В результате откроется представление JUnit, содержащее информацию об успешном проведении теста (рис. 2.20).

Рис. 2.20. Представление JUnit с результатами выполнения теста

Запустить JUnit-тест можно также в окне Outline при открытом в редакторе кода JUnit-классе, при этом можно запускать отдельные тесты JUnit-класса с помощью нажатия правой кнопкой мышки на узле теста и выборе в контекстном меню команды Run As | JUnit Test (рис. 2.21).

Рис. 2.21. Запуск отдельных тестов в окне Outline

Перезапустить тест можно кнопкой Rerun Test панели инструментов представления JUnit.

Контекстное меню представления JUnit обеспечивает запуск и отладку тестов.

Для настройки конфигурации процесса тестирования можно воспользоваться мастером Run Configurations, открыть который можно с помощью команды Run As | Run Configurations контекстного меню окна Package Explorer (рис. 2.22).

Рис. 2.22. Мастер настройки конфигурации JUnit-тестирования

Кроме того, настроить платформу JUnit можно с помощью раздела Java | JUnit команды Preferences меню Window панели инструментов Workbench-окна.

Для создания набора тестов в окне Package Explorer нажмем правой кнопкой мышки на узле Data.java и в контекстном меню выберем команду New | Other | Java | JUnit | JUnit Test Suit, нажмем кнопку Next – появится мастер создания набора тестов (рис. 2.23).

Рис. 2.23. Мастер создания набора JUnit-тестов

Нажмем кнопку Finish – в результате будет создан набор JUnit-тестов, который можно запустить с помощью команды Run As | JUnit Test.


Рефакторинг