В этом небольшом рецепте, который является очередным переводом уже ставшей классикой серии Idiomatic D, мы покажем, как можно с помощью dub собрать программу в режиме юнит-тестирования с включенной оптимизацией.
Итак, предоставим слово автору Idiomatic D.
Утилита dub является важнейшей частью современного языка программирования D. Однако, по умолчанию, в этой утилите не предлагается запуск юнит-тестов с оптимизациями.
Итак, как же избежать сюрпризов в итоговой версии ? Чтобы в этом случае сделал бы Кент Бек ?
Примечание переводчика: Кент Бек — известный программист и автор методик «экстремального программирования» и «разработки через тестирование». Кстати, рекомендую прочитать его труд «Экстремальное программирование».
В этом посте, мы раскроем секрет, ревностно охраняемый самыми успешными организациями в мире: проведение юнит-тестов с включенной и выключенной оптимизацией.
Изменения в dub.json
Создайте новый тип сборки с соответствующими флагами. Также это хороший способ познакомиться с правильными «buildTypes»:
"buildTypes": { "unittest-opt": { "buildOptions": ["unittests", "optimize", "inline"] } }
Поскольку здесь отсутствует флаг -release, то assert все равно остаются включенными вместе с остальным содержимым юнит-тестов.
(Пожалуйста, не называйте эту конфигурацию unittest-release. Поскольку флаг -release не присутствует, есть одна важная вещь: такое именование конфигурации усиливает путаницу между «релизом» и «оптимизацией»)
Запуск обеих версий
dub test dub test -b unittest-opt