Подтвердить что ты не робот

Как выполнять тесты, которые соответствуют только регулярному выражению?

В sbt 0.10.1 я часто использую test-only, чтобы сузить число моих тестов.

sbt> test-only com.example.MySpec

Однако я хочу сузить так, что я запускаю только те тесты, чье имя/описание соответствует регулярному выражению. Есть ли какой-то синтаксис для достижения чего-то подобного?

sbt> test-only .*someRexExp.*
4b9b3361

Ответ 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.