Сильные стороны фреймворков Clojure? - PullRequest
14 голосов
/ 10 октября 2011

Какой из них вы предпочитаете и почему?Каковы плюсы и минусы каждого?В каком сценарии каждый затмевает другие?

Я особенно заинтересован в midje против clojure.test, но не стесняйтесь приводить и другие платформы тестирования Clojure.* Лучшая среда модульного тестирования для Clojure? (ответы на этот вопрос не предоставили подробных сведений о "почему").

Ответы [ 3 ]

11 голосов
/ 23 февраля 2012

Я предпочитаю Midje .Midje предоставляет путь перехода от clojure.test к более гибкому, читабельному, абстрактному и любезному стилю тестирования.

Midje поддерживает стили TDD как сверху вниз, так и снизу вверх, а также имеет функции насмешек и заглушеквстроенный в него, а также некоторые мощные функции, такие как шашки, метаконстанты, табличные факты.

Midje wiki

Вот простой пример:

(fact "Midje can do simple stubbing"
  (+ (a) 2) => 5
  (provided 
    (a) => 3))
11 голосов
/ 25 ноября 2011

Я не пробовал их все, но мне нравится старая версия clojure.test по следующим причинам:

  • Она уже есть в Clojure API : никаких дополнительных зависимостей.
  • Хорошо интегрируется с Maven : я использую Eclipse с плагином clojure-maven, чтобы гарантировать, что и тесты Clojure, и Java запускаются автоматически при сборке.
  • Это просто : 99% того, что мне нужно в тестировании, - это просто написать хорошо структурированный набор утверждений, clojure.test делает это довольно просто

Пример кода:

(testing "Arithmetic"
  (testing "with positive integers"
    (is (= 4 (+ 2 2)))
    (is (= 7 (+ 3 4))))
  (testing "with negative integers"
    (is (= -4 (+ -2 -2)))
    (is (= -1 (+ 3 -4)))))
4 голосов
/ 28 марта 2015

Я предпочитаю ожидания или clojure.test с гуманным тест-выводом .Обе опции дают наиболее читаемые ошибки и обеспечивают довольно минимальный синтаксис.

пример clojure.test

При выполнении следующего теста вы получите следующий вывод:

(deftest map-comparisons
  (is (= {:sheep 1} {:cheese 1 :sheep 1})))

По умолчаниювывод clojure.test

FAIL in (map-comparisons) (map_test.clj:5)
expected: (= {:sheep 1} {:cheese 1, :sheep 1})
  actual: (not (= {:sheep 1} {:cheese 1, :sheep 1}))

Пример вывода clojure.test с гуманным тест-выводом

FAIL in (map-comparisons) (map_test.clj:5)
expected: {:sheep 1}
  actual: {:cheese 1, :sheep 1}
    diff: + {:cheese 1}

пример ожиданий

Тест выглядит следующим образом:

(expect {:sheep 1} {:sheep 1, :cheese 1})

вывод ожиданий

failure in (map_expectations.clj:6) : example.map-expectations
(expect {:sheep 1} {:sheep 1, :cheese 1})

           expected: {:sheep 1}
                was: {:cheese 1, :sheep 1}

           in expected, not actual: null
           in actual, not expected: {:cheese 1}

Я провел более подробное сравнение выходных данных четырех основных библиотек тестирования Clojure, и их можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...