Я знаю, что один тест можно запустить, запустив в sbt,
testOnly *class -- -n Tag
Есть ли способ сообщить sbt / scalatest для запуска одного теста без тегов? Например:
testOnly *class -- -X 2
это будет означать «запустить второй тест в классе. Что бы это ни было». У нас есть куча тестов, и никто не удосужился пометить их, так есть ли способ запустить один тест без тега?
sbt
в кавычках , напримерsbt "test-only *SingleTestSuite"
Ответы:
Теперь это поддерживается (начиная с ScalaTest 2.1.3) в интерактивном режиме:
запускать только тесты, имя которых включает подстроку "foo".
Для точного соответствия вместо подстроки используйте
-t
вместо-z
.источник
-t
для точного соответствия? Я не могу заставить его работать.src/it
), он должен подготовитьсяit
кtestOnly
. Например, в командной строке:sbt "it:testOnly *MyIntegrationTestSuite"
.when
иshould
могут повторяться между тестами. Чтобы выбрать один конкретный тест, мне нужно сказать «имя содержит это И это».Я хотел добавить конкретный пример, чтобы сопровождать другие ответы
Вам нужно указать имя класса, который вы хотите протестировать, поэтому, если у вас есть следующий проект (это проект Play):
Вы можете протестировать только
Login
тесты, выполнив следующую команду из консоли SBT:Если вы запускаете команду вне консоли SBT, вы должны сделать следующее:
источник
sbt "test:testOnly *LoginServiceSpec"
testOnly *LoginServiceSpec
и снаружи:sbt "testOnly *LoginServiceSpec"
Я не вижу способа выполнить один непомеченный тест в тестовом классе, но я предоставляю свой рабочий процесс, поскольку он кажется полезным для всех, кто сталкивается с этим вопросом.
Из сеанса SBT:
(Звездочка - это подстановочный знак, вы можете указать полный путь
com.example.specs.YourTestClass
.)Все тесты в этом классе будут выполнены. Предположительно, вас больше всего волнуют неудачные тесты, поэтому исправьте все неудачные реализации и запустите:
... который будет выполнять только тесты, которые не удалось. (Повтор самой последней выполненной
test:testOnly
команды будет таким же, как иtest:testQuick
в этом случае, но если вы разбите свои тестовые методы на соответствующие тестовые классы, вы можете использовать подстановочный знак, чтобы сделатьtest:testQuick
более эффективный способ повторного запуска неудачных тестов.)Обратите внимание, что номенклатура для теста в ScalaTest - это класс теста, а не конкретный метод теста, поэтому выполняются все немаркированные методы.
Если у вас слишком много тестовых методов в тестовом классе, разбейте их на отдельные классы или пометьте их соответствующим образом. (Это может быть сигналом того, что тестируемый класс нарушает принцип единой ответственности и может использовать рефакторинг.)
источник
*YourTestClass
должно быть имя класса. Не имя файла.Просто для упрощения примера Тайлера.
test:
Префикс не нужен.Итак, согласно его примеру:
В
sbt
консолиИ в терминале:
источник
Вот Scalatest страница на использовании бегуна и расширенное обсуждение вопроса о
-t
и-z
опций .Этот пост показывает, какие команды работают для тестового файла, который использует
FunSpec
.Вот тестовый файл:
Эта команда запускает четыре теста в
iLike
блоке description (из командной строки SBT):Вы также можете использовать кавычки, так что это также будет работать:
Это запустит один тест:
Это запустит два теста, которые начинаются с «работает с»:
Я не могу получить
-t
возможность запуска каких-либо тестов вCardiBSpec
файле. Эта команда не запускает никаких тестов:Похоже,
-t
опция работает, когда тесты не вложены вdescribe
блоки. Давайте посмотрим на другой тестовый файл:-t
можно использовать для запуска одиночного теста:-z
также может использоваться для запуска одиночного теста:Смотрите этот репозиторий, если вы хотите запустить эти примеры.
источник