Кто такой Спок?
Спок - коммандер и научный сотрудник звездолета "Энтерпрайз", родился в 2230 году по земному летоисчислению. Наполовину землянин, наполовину вулканец. Увлечение компютерами привело его в звездный флот, где он и сделал свою карьеру научного сотрудника.Кому не хватило терпения посмотреть сериал, на википедии есть краткая биография Спока.
Не знаю, что сподвигло разработчиков назвать фреймворк для тестирования именем персонажа из Стартрека. Может двойственная натура героя (spock хорошо подходит как для тестирования Java так и Groovy кода), а может что еще.
Ближе к коду
Начну педалить код, а детали настройки и как подключать будут ниже. Я решил написать бота для бомбермена. Детали игры, инструкции, примеры кода для разных языков на сайте codenjoy.
Добавил строчку в таблицу данных и получил вот такую "колбасу":
Колбасу сразу же почистил - вынес значения колонки board в константы:
До этого момента тесты проходили, но я нашел ошибку в тесте и добавил еще одну проверку в expect
После чего тесты упали. Вот так отображаются фейлы тестов:
Поскольку тест упал на каждой строке данных, то вот 2й фейл:
Делаю репорты выполения читабельнее
Понравилась возможность выводить значения данных в имени тестового метода. Для этого есть аннотация @Unroll. Для примера я сделал следующий изврат.Стал использовать мапу со значениями, а ключ принимаю как параметр теста:
Инициализацию мапы вынес в специальный метод setupSpec. setupSpec вызывается 1 раз перед всеми тестами. Нестатические поля надо помечать как @Shared, если их значения используются в тестах:
Ну и зафейленые методы выглядят теперь так:
Как подключить
1. Нужно добавить плагин. Использую maven-compiler-plugin, с поддержкой груви компиляции
2. Добавить зависимости на spock и на сам groovy:
3. Поскольку я использовал снапшотную версию spok, то добавить репозиторий:
А если поставить spock плагин к идее, то будет вообще сказкаРесурсы
1. Страничка фреймворка: https://code.google.com/p/spock/
2. Наш сайт с игрушками : codenjoy.com. Онлайн батлы : http://codenjoy.com/codenjoy-contest/
3. Репозиторий на гитхабе с кодом : https://github.com/szelenin/bomberman
4. Пример использования от разработчиков: https://github.com/spockframework/spock-example
No comments:
Post a Comment