Хэмкрест
Hamcrest — это платформа, которая помогает писать тесты программного обеспечения на Java языке программирования . Он поддерживает создание настраиваемых средств сопоставления утверждений («Hamcrest» — анаграмма слова определять правила сопоставления «сопоставители»), что позволяет декларативно . [1] Эти средства сопоставления используются в средах модульного тестирования, таких как JUnit и jMock. Hamcrest включен в JUnit 4 с 2012 года. [2] но был исключен из JUnit 5 в 2017 году. [3]
Hamcrest портирован на C++ , C# , [4] Объектив-C , Python , [5] ActionScript 3 , [6] PHP , [7] JavaScript , [8] Эрланг , [9] Р , [10] Ржавчина , [11] Java , PHP , Go , Common Lisp и Swift . [12]
Обоснование
[ редактировать ]Среды модульного тестирования «первого поколения» предоставляют оператор «assert», позволяющий утверждать во время теста, что определенное условие должно быть истинным. Если условие ложно, тест не пройден. Например:
assert(x == y);
Но во многих языках этот синтаксис не может выдать достаточно хорошее сообщение об ошибке, если «x» и «y» не равны. Было бы лучше, если бы в сообщении об ошибке отображалось значение «x» и «y». Чтобы решить эту проблему, среды модульного тестирования «второго поколения» предоставляют семейство операторов утверждения, которые выдают более качественные сообщения об ошибках. Например,
assert_equal(x, y);
assert_not_equal(x, y);
Но это приводит к взрывному росту числа макросов утверждений, поскольку приведенный выше набор расширяется для поддержки сравнений, отличных от простого равенства. Таким образом, платформы модульного тестирования «третьего поколения» используют такую библиотеку, как Hamcrest, для поддержки оператора «assert_that», который можно комбинировать с объектами «сопоставителя», что приводит к такому синтаксису:
assert_that(x, equal_to(y))
assert_that(x, is_not(equal_to(y)))
Преимущество состоит в том, что в случае сбоя утверждения по-прежнему появляются плавные сообщения об ошибках, но с большей расширяемостью. Теперь можно определять операции, которые принимают сопоставители в качестве аргументов и возвращают их в качестве результатов, что приводит к созданию грамматики, которая может генерировать огромное количество возможных выражений сопоставителей из небольшого числа примитивных сопоставителей.
Эти операции сопоставления более высокого порядка включают логические связки (и или и нет) и операции для перебора коллекций. В результате получается богатый язык сопоставления, который позволяет писать сложные утверждения над коллекциями в декларативном, а не процедурном стиле. [ нужна ссылка ]
Ссылки
[ редактировать ]- ^ «Учебник по Хэмкресту» .
- ^ Марк Филипп (21 октября 2012 г.). «Сводка изменений в версии 4.4» . Документация JUnit . Проверено 20 сентября 2016 г.
- ^ «Руководство пользователя JUnit 5 — сторонние библиотеки утверждений» . Проверено 11 мая 2018 г.
- ^ «Нэмкрест» . Гитхаб . 29 июля 2021 г.
- ^ "ПиХэмкрест" .
- ^ «Хэмкрест-АС3» . Гитхаб . 4 июля 2020 г.
- ^ «Хэмкрест — Код Google» .
- ^ "Hamcrest4Qunit" . Гитхаб . 22 сентября 2021 г.
- ^ «Хэмкрест Эрланг» . Гитхаб . 22 февраля 2022 г.
- ^ «Хэмкрест для Ренджина» .
- ^ «Грузовой пакет Хэмкреста» .
- ^ «Хэмкрест для Свифта» . Гитхаб . 23 февраля 2022 г.
Внешние ссылки
[ редактировать ]