Книга: Экстремальное программирование. Разработка через тестирование

Тест для изучения (Learning Test)[15]

Тест для изучения (Learning Test)[15]

Когда необходимо писать тесты для программного обеспечения, разработанного сторонними разработчиками? Перед тем как вы впервые воспользуетесь новыми возможностями этого программного обеспечения.

Предположим, что вы приступаете к разработке программы, основанной на использовании библиотеки Mobile Information Device Profile (MIDP) для языка Java. Вы собираетесь сохранить некоторые данные в объекте RecordStore и затем извлечь их оттуда. Должны ли вы просто написать код в надежде на то, что он заработает? Это один из возможных методов разработки.

Есть альтернативный метод. Обратите внимание на то, что вы собираетесь использовать новый метод нового класса. Вместо того чтобы просто воспользоваться им внутри разрабатываемого вами кода, вы пишете небольшой тест, который позволяет вам убедиться в том, что API работает так, как вы того ожидаете. Таким образом, вы можете написать:

RecordStore store;

public void setUp() {

store = RecordStore.openRecordStore("testing", true);

}

public void tearDown() {

RecordStore.deleteRecordStore("testing");

}

public void testStore() {

int id = store.addRecord(new byte[] {5, 6}, 0, 2);

assertEquals(2, store.getRecordSize(id));

byte[] buffer = new byte[2];

assertEquals(2, store.getRecord(id, buffer, 0));

assertEquals(5, buffer[0]);

assertEquals(6, buffer[1]);

}

Если ваше понимание API совпадает с действительностью, значит, тест сработает с первого раза.

Джим Ньюкирк рассказал мне о проекте, в котором разработка тестов для обучения выполнялась на регулярной основе. Как только от сторонних разработчиков поступала новая версия пакета, немедленно запускались имеющиеся тесты. В случае необходимости в тесты вносились исправления. Если тесты завершались неудачей, не было никакого смысла запускать приложение, так как оно определенно не заработает. Если же все тесты выполнялись успешно, значит, и приложение заработает.

Оглавление книги


Генерация: 1.325. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз