Рубрика «spock»

Мне стало скучно писать на Python, захотелось чего-нибудь необычного. Решил попробовать Haskell. Языка я не знаю, однако просто писать консольные учебные программы, типа вычисления факториала, не хотелось. После изучения довольно большого числа постов про Haskell и его применения в реальной жизни, я понял, что одна из потенциальных точек роста популярности языка — написание web-приложений. Как ни странно, под Haskell есть довольно много web-фреймворков. Мой выбор пал на Spock, потому что, судя по описанию, это простой и быстрый в разработке фреймворк. У меня есть некоторый опыт написания web-приложений на Flask, поэтому я подумал, что будет интересно сравнить такие непохожие подходы в решении похожих задач. В статье я постараюсь максимально подробно изложить свой путь проб и ошибок в изучении Haskell на примере написания простейшего web-приложения на Spock. Возможно, это будет полезно для тех, кто сомневается, пробовать ли изучать Haskell и будет ли он полезен в реальной жизни.

Читать полностью »

Spock предоставляет 3 мощных (но разных по сути) инструмента, упрощающих написание тестов: Mock, Stub и Spy.

Моки, стабы и шпионы в Spock Framework - 1

Довольно часто коду, который нужно протестировать, требуется взаимодействовать с внешними модулями, называющимися зависимостями (в оригинальной статье используется термин collaborators, который не очень распространён в русскоязычной среде).

Модульные тесты чаще всего разрабатываются для тестирования одного изолированного класса при помощи различных вариантов моков: Mock, Stub и Spy. Так тесты будут надёжнее и будут реже ломаться по мере того, как код зависимостей эволюционирует.

Такие изолированные тесты менее подвержены проблемам при изменении внутренних деталей реализации зависимостей.

От переводчика: каждый раз, когда я использую Spock Framework для написания тестов, я чувствую, что могу ошибиться при выборе способа подмены зависимостей. В этой статье есть максимально краткая шпаргалка по выбору механизма для создания моков.

Читать полностью »


Введение

Современные проекты все чаще предъявляют высокие требования к покрытию автоматическими тестами. В наше время писать тесты не просто признак хорошего тона, но одно из требований, которое предъявляется к коду. Все чаще мы слышим такие аббревиатуры, как TDD (Test Driven Development) и BDD (Behaviour Driven Development) и многие строго следуют этим подходам в разработке.
BDD это одна из разновидностей TDD, и об этом я хотел бы написать в этой статье. Точнее не о самом BDD, а о frameworks, которые нам предоставляет индустрия на сегодняшний день. А если уж быть совсем точным, то о трех из них: spock, easyb и Читать полностью »


Geb на практике

Я вот, скажем, люблю, когда всю работу за меня делают роботы. Поэтому считаю необходимым всякие скрипты, inspections, проверщики орфографии и, разумеется, автоматические тесты. Кстати, как вам такой тестик:

Browser.drive(driver: new InternetExplorerDriver()) {      go "http://www.google.com"      $('form', action:endsWith('/search')).q =                      'тестирование при помощи geb и spock'     $('button', value:'Поиск').click()     waitFor { $('#search') }     assert $('#search').size() == 1     assert $('#search').find('li.g a.l').size() > 0     println "Первый результат: " + $('#res').find('li.g a.l', 0).text() }.quit() 

Мне кажется, у таких тестов высокая степень читаемости — неважно даже, какой это язык. Можно по такому вот образцу написать ещеЧитать полностью »

JAVA / Тестирование в Java. Spock Framework

В предыдущих статьях на примерах JUnit и TestNG я упоминал о test-driven development(TDD) и data-driven testing(DDT). Но есть еще один активно набирающий популярность подход, behaviour-driven development(BDD). Это такое развитие TDD техники, при котором на тест смотрят не как на тестирование каких-то компонентов системы, а как на требования к функционалу. Если TDD оперирует такими понятиями, как тест или метод, то для BDD это спецификация и требования. Про эту технику уже говорили на хабре ранее:
Эволюция юнит-теста,

Экстремальное программирование, знакомство с Behavior Driven Development и RSpec

Этот подход применим используя и JUnit, иЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js