Jump to content

Хэмкрест

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)))

Преимущество состоит в том, что в случае сбоя утверждения по-прежнему появляются плавные сообщения об ошибках, но с большей расширяемостью. Теперь можно определять операции, которые принимают сопоставители в качестве аргументов и возвращают их в качестве результатов, что приводит к созданию грамматики, которая может генерировать огромное количество возможных выражений сопоставителей из небольшого числа примитивных сопоставителей.

Эти операции сопоставления более высокого порядка включают логические связки (и или и нет) и операции для перебора коллекций. В результате получается богатый язык сопоставления, который позволяет писать сложные утверждения над коллекциями в декларативном, а не процедурном стиле. [ нужна ссылка ]

  1. ^ «Учебник по Хэмкресту» .
  2. ^ Марк Филипп (21 октября 2012 г.). «Сводка изменений в версии 4.4» . Документация JUnit . Проверено 20 сентября 2016 г.
  3. ^ «Руководство пользователя JUnit 5 — сторонние библиотеки утверждений» . Проверено 11 мая 2018 г.
  4. ^ «Нэмкрест» . Гитхаб . 29 июля 2021 г.
  5. ^ "ПиХэмкрест" .
  6. ^ «Хэмкрест-АС3» . Гитхаб . 4 июля 2020 г.
  7. ^ «Хэмкрест — Код Google» .
  8. ^ "Hamcrest4Qunit" . Гитхаб . 22 сентября 2021 г.
  9. ^ «Хэмкрест Эрланг» . Гитхаб . 22 февраля 2022 г.
  10. ^ «Хэмкрест для Ренджина» .
  11. ^ «Грузовой пакет Хэмкреста» .
  12. ^ «Хэмкрест для Свифта» . Гитхаб . 23 февраля 2022 г.
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4de9cc04e5b3bb1b8f4e8519a725cae2__1702575960
URL1:https://arc.ask3.ru/arc/aa/4d/e2/4de9cc04e5b3bb1b8f4e8519a725cae2.html
Заголовок, (Title) документа по адресу, URL1:
Hamcrest - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)