Hamcrest - Hamcrest
Hamcrest это фреймворк, который помогает писать тесты программного обеспечения в Ява язык программирования. Он поддерживает создание настраиваемых сопоставителей утверждений (Hamcrest - это анаграмма of 'matchers'), позволяя определять правила сопоставления декларативно.[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] Erlang,[9] р,[10] Ржавчина,[11]. и Быстрый[12]
Обоснование
Среды модульного тестирования «первого поколения» предоставляют оператор assert, позволяющий утверждать во время теста, что определенное условие должно быть истинным. Если условие ложно, тест не проходит. Например:
утверждать(Икс == у);
Но на многих языках этот синтаксис не дает достаточно хорошего сообщения об ошибке, если «x» и «y» не равны. Было бы лучше, если бы в сообщении об ошибке отображались значения «x» и «y». Чтобы решить эту проблему, фреймворки модульного тестирования «второго поколения» предоставляют семейство утверждений, которые позволяют лучше выводить сообщения об ошибках. Например,
assert_equal(Икс, у);assert_not_equal(Икс, у);
Но это приводит к взрывному росту числа макросов утверждений, поскольку приведенный выше набор расширен для поддержки сравнений, отличных от простого равенства. Таким образом, фреймворки модульного тестирования «третьего поколения» используют такую библиотеку, как Hamcrest, для поддержки оператора assert_that, который можно комбинировать с объектами matcher, что приводит к подобному синтаксису:
assert_that(Икс, равно(у))assert_that(Икс, не является(равно(у)))
Преимущество состоит в том, что сообщения об ошибках по-прежнему появляются при сбое утверждения, но с большей расширяемостью. Теперь можно определять операции, которые принимают сопоставители в качестве аргументов и возвращают их как результаты, что приводит к грамматике, которая может генерировать огромное количество возможных выражений сопоставления из небольшого числа примитивных сопоставителей.
Эти операции сопоставления высшего порядка включают в себя логические связки (и, или и not) и операции для перебора коллекций. В результате получается богатый язык сопоставления, который позволяет писать сложные утверждения для коллекций в декларативном стиле, а не в процедурном стиле.[нужна цитата ]
Рекомендации
- ^ "Учебник Hamcrest".
- ^ Марк Филипп (21 октября 2012 г.). «Сводка изменений в версии 4.4». Документация JUnit. Получено 20 сен 2016.
- ^ «Руководство пользователя JUnit 5 - Сторонние библиотеки утверждений». Получено 11 мая 2018.
- ^ "NHamcrest".
- ^ "PyHamcrest".
- ^ «Хамкрест-АС3».
- ^ "Hamcrest - Google Code".
- ^ "Hamcrest4Qunit".
- ^ "Хамкрест Эрланг".
- ^ "Хамкрест для Ренджина".
- ^ "Hamcrest Cargo package".
- ^ "Хамкрест для Свифта".
внешняя ссылка
Этот инструмент для программирования -связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |