18 мая 2010 года новый проект Studio Pragmatists из стекла и тумблера загрузил Tumbler 0.2.1 в Maven. Недавно, написав о JBehave, мне очень понравилась концепция поведенческого развития. Поэтому я решил написать аналогичную статью о Tumbler. Если вы хотите, чтобы код проекта был доступен в моем примере проекта .
4 часа в 20 минут!
Еще раз я решил отложить работу на 4 часа. На этот раз, хотя весь процесс занял около 20 минут. Владелец продукта и тестеры создают файл истории. Формат Tumbler позволяет создавать несколько историй, каждая из которых содержит сценарии, поэтому его можно охватить сложным набором требований в одном файле. Это обеспечивает гибкость при разбиении работы на задачи. Согласно обычному поведенческому подходу, сценарий содержит разделы « Задано» , « Когда» и « Затем», которые описывают поведение.
Простой файл поведения тумблера
Story: Building a simple page
Scenario: should create a page 4 lines long with 5 data items in each line
Given a data fixture capable of complex page checking
When a page is created with 'twenty' items on a page
Then there should be 'four' lines on a page with 'five' data items on each line
Генерация файлов Java
Следующим шагом является создание java из файлов сценариев, которые я использовал в конфигурации запуска eclipse, но в командной строке:
java -classpath Tumbler.jar tumbler.ScenarioToJavaConverter YOUR_STORY.scenario
Для приведенного выше сценария это был результат. Обратите внимание на создание заданных, когда и затем методов и @story, аннотаций @Scenario, которые соответствуют исходному файлу.
import org.junit.*;
import static org.junit.Assert.*;
import static tumbler.Tumbler.*;
@RunWith(TumblerRunner.class)
@Story("Building a simple page")
public class BuildingASimplePageScenarios {
@Scenario(pending = true)
public void shouldCreateAPage4LinesLongWith5DataItemsInEachLine() {
given("a data fixture capable of complex page checking");
when("a page is created with 'twenty' items on a page");
then("there should be 'four' lines on a page with 'five' data items on each line");
}
}
Который просто оставляет заполнение в поведении и фактическом тесте
@RunWith(TumblerRunner.class)
@Story("Building a simple page")
public class BuildingASimplePageScenarios {
private SimplePage page;
@Scenario(pending = false)
public void shouldCreateAPage4LinesLongWith5DataItemsInEachLine() {
given("a data fixture capable of complex page checking");
final PageDataFixture dataFixture = new PageDataFixture();
when("a page is created with 'twenty' items on a page");
page = SimplePage.newInstance(dataFixture.getDataItem(), 20);
then("there should be 'four' lines on a page with 'five' data items on each line");
Map expectedLines = dataFixture.createPageExpectation(4, 5);
Map actualMap = page.getMap();
assertThat(actualMap, is(expectedLines));
}
}
Наконец, есть два флага, которые могут быть применены к исполнителю теста, который включает создание отчета. (-DgenerateReport = html -DoutputFolder = target) Было бы легко настроить профиль maven, который собрал все файлы сценариев и передал эти два флага. Стандартный отчет использует Freemarker, поэтому было бы легко создать свой собственный. Это простой список сценариев и их подробностей.
Вот так выглядел мой отчет
Хорошие моменты
- Что касается JBehave, мне нравится попытка приблизить владельца продукта к членам группы тестирования и разработки.
- Это очень простая система с очень маленькой кривой обучения
- Генерация Java повышает производительность и позволяет владельцу продукта работать с отдельными артефактами.
Плохие очки
- В настоящее время это очень ранняя бета-версия. Не столько критика, сколько напоминание о том, что на этой стадии все может развиваться с перерывами.
- Я хотел бы видеть возможность генерировать параметры из файлов сценариев. Если нет, то есть способ отредактировать тесты, чтобы ввести тестирование на основе параметров
- Скрам и проворный являются итеративными. Добавление к исходным файлам сценария будет означать создание классов снова. Это оставляет разработчику неприятную задачу переноса изменений. Это может быть решено, если входными данными были файл сценария и завершенная тестовая Java, с выходными данными, которые модифицируют и добавляют. Запуск их показал бы разрывы, если бы параметры были также частью поколения.
Вывод
Я не могу дождаться, чтобы увидеть полную версию или, по крайней мере, версию-кандидата, потому что я вижу будущее для этого проекта.