Чем динамические тесты отличаются от параметризованных тестов в JUnit 5?

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

единственный" истинно " динамический тестовый пример в JUnit 5 docs не практичен.

какие идеи?

1 ответов


в отличие от DynamicTest, ParameterizedTest не является частью ядра junit-jupiter-api но находится в отдельном артефакте с именем junit-jupiter-params (см. 3.12.1. Требуемая Настройка). Это связано с тем, что одним из основных принципов JUnit 5 является "предпочтение точек расширения над функциями" (основные принципы * junit-team / junit5 Wiki).

API JUnit Jupiter определяет, как создавать и регистрировать динамические тесты в качестве точки расширения для JUnit, а JUnit Jupiter Params определяет API более высокого уровня для определения параметризованных тестов.

JUnit 5.0 M5 Milestoneв настоящее время тема "динамические контейнеры и незначительные изменения API". С этими ожидаемыми изменениями разработчики тестов смогут не только создавать динамические тесты, но и деревья динамических тестов (динамические контейнеры, содержащие другие динамические контейнеры и/или тесты), что в настоящее время невозможно сделать с парамтеризованными тестами. Такое окажется, Я думаю, очень полезным для создание тестов, подобных спецификациям.

короче говоря, идея, как я понимаю, заключается в том, чтобы сначала выпустить основные точки расширения через "низкоуровневые" API (например, динамические контейнеры/тесты), а затем создавать и поощрять третьи стороны создавать расширения, которые используют их (например, параметризованные тесты).