Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

красное затмение

БОРИС ВОЛЬФСОН

Спецвыпуск: Хакер, номер #065, стр. 065-048-3


Чтобы показать всю мощь Eclipse, начнем, как ни странно, с написания тестов. Добавим (с помощью того же контекстного меню) набор тестов — JUnit Test Case в пакет tests. Набор тестов представляет собой потомок класса TestCase, который содержит все методы, необходимые для тестирования. Сам тест — это публичный метод с именем, которое начинается с приставки «test». Правильность проверяется при помощи методов assert, их довольно много. Например, метод assertEquals проверяет равенство своих аргументов, и если они равны, то тест считается пройденным. Наборы тестов обычно тестируют методы одного класса. Мы будем иметь дело с одним классом — QuadricRoots, который с помощью метода findRoots займется поиском корней квадратного уравнения. Методу будут передаваться три коэффициента квадратного уравнения, а возвращать он будет массив действительных чисел.

сначала — тесты

Начнем с самого простого теста, при котором уравнение не имеет корней и, как следствие, наш метод возвращает null. Тесты обычно пишутся начиная с вызова assert, и только затем создаются и настраиваются объекты. Посмотрим, чем здесь поможет Eclipse.

public class QuadricRootsTests extends TestCase {

public void testFindRoots()

{

assertEquals(null, quadricRoots.FindRoots(1, 1, 100));

}

}

Когда ты напишешь этот метод, Eclipse автоматически и совершенно прозрачно скомпилирует программу, что возможно благодаря инкрементальной компиляции, во время которой компилируются только измененные файлы. В результате мы получаем несколько преимуществ — от скорости до возможностей продвинутого рефакторинга и поиска.

Но и на этом преимущества не заканчиваются! Eclipse поддерживает модную функцию подсветки ошибок на лету. Дело в том, что объект quadricRoots еще не объявлен, но не стоит сразу бросаться писать что-то. Eclipse сделает все сама :). Достаточно навести курсор на подчеркнутое слово и нажать <Ctrl>+<1> (это сочетание клавиш пригодится еще не раз, запомни его). Тут появляется окошко Quick Fix, в нем варианты исправления, из которых выбираем Create local variable. И вот результат — создана локальная переменная с заданным именем (совсем люди обленились — прим. Dr.).

Теперь объявим тип переменной b с помощью того же Quick Fix, создадим класс QuadricRoots и проинициализируем переменную:

QuadricRoots quadricRoots = new QuadricRoots();

Для инициализации достаточно написать new и выбрать нужный класс. Первый тест готов:

public class QuadricRootsTests extends TestCase {

public void testFindRoots()

{

QuadricRoots quadricRoots = new QuadricRoots();

assertEquals(null, quadricRoots.FindRoots(1, 1, 100));

}

}

Осталось создать метод FindRoots в классе QuadricRoots при помощи все того же <Ctrl>+<1>, а дальше — только переименовать параметры и сменить их тип. Создадим простую заглушку, чтобы тест сработал (это называется fake) — просто вернем null. Если же следовать классике/канонам, то необходимо запустить тест без заглушки. Если он не сработает, значит, тест правильный :)

Назад на стр. 065-048-2  Содержание  Вперед на стр. 065-048-4