Как выполнять тесты, которые соответствуют только регулярному выражению?
В sbt 0.10.1 я часто использую test-only
, чтобы сузить число моих тестов.
sbt> test-only com.example.MySpec
Однако я хочу сузить так, что я запускаю только те тесты, чье имя/описание соответствует регулярному выражению. Есть ли какой-то синтаксис для достижения чего-то подобного?
sbt> test-only .*someRexExp.*
Ответы
Ответ 1
Полные регулярные выражения не поддерживаются testOnly
. Однако поддерживаются подстановочные знаки.
sbt> testOnly com.example.*Spec
Только звездочка *
интерпретируется специально здесь, а не периоды. Это выберет все тесты, начинающиеся с com.example.
и заканчивающиеся на Spec
.
Или просто весь тест Spec
s:
sbt> testOnly *Spec
testOnly
и другая информация о тестировании приведена здесь: http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing
Ответ 2
Вы можете сопоставлять тестовые примеры по их имени (вместо или в дополнение к именам классов пакета), используя аргументы несущей для конкретной инфраструктуры. ScalaTest поддерживает соответствие подстроки с аргументом -z
:
> testOnly -- -z insert
> testOnly *TreeSpec -- -z insert
Выполняет все тесты с "вставкой" в их имени, а затем только совпадающие случаи в наборах, заканчивающихся на TreeSpec
, как вы хотели бы использовать. Вы также можете использовать -n TagName
и -l TagName
для включения или исключения тегов из поддержки тегов ScalaTest и -t
для соответствия точному имени теста.
Specs2 поддерживает полные регулярные выражения Java с аргументом -ex
:
> testOnly -- -ex ".*someRexExp.*"
-include
и -exclude
поддерживают функции маркировки Spec2.
См. встроенные ссылки для полных списков аргументов, которые поддерживают бегуны. Кажется, что они работают только с командой testOnly
sbt, а не test
.