ScalaTest в sbt: есть ли способ запустить один тест без тегов?
Я знаю, что один тест можно запустить, запустив, в sbt,
test-only *class -- -n Tag
есть ли способ сказать sbt / scalatest, чтобы запустить один тест без тегов? Например:
test-only *class -- -X 2
это будет означать " выполнить второй тест в классе. Что бы это ни было". У нас есть куча тестов, и никто не потрудился пометить их, так есть ли способ запустить один тест без тега?
3 ответов:
Теперь это поддерживается (начиная с ScalaTest 2.1.3) с помощью:
testOnly *MySuite -- -z fooдля выполнения только тех тестов, имя которых содержит подстроку "foo".
для точного совпадения, а не подстроки, используйте
-tвместо-z.
Я хотел бы добавить конкретный пример, чтобы сопровождать другие ответы
вам нужно указать имя класса, который вы хотите протестировать, так что если у вас есть следующий проект (это игровой проект):
вы можете проверить только
Loginтесты, выполнив следующую команду из консоли SBT:test:testOnly *LoginServiceSpecЕсли вы выполняете команду из-за пределов консоли SBT, вы бы сделали следующее:
sbt "test:testOnly *LoginServiceSpec"
Я не вижу способа запустить один тест без тегов в тестовом классе, но я предоставляю свой рабочий процесс, поскольку он кажется полезным для всех, кто сталкивается с этим вопросом.
из сеанса sbt:
test:test-only *YourTestClass(Звездочка является подстановочным, вы можете указать полный путь
com.example.specs.YourTestClass.)все тесты в тест-классе будут выполнены. Предположительно, вы больше всего обеспокоены неудачными тестами, поэтому исправьте любые неудачные реализации, а затем беги:
test:test-quick... который будет выполнять только неудачные тесты. (Повторение последнего выполненного будет такой же, как
test:test-quickв этом случае, но если вы разбиваете свои методы тестирования на соответствующие тестовые классы, вы можете использовать подстановочный знак, чтобы сделатьtest:test-quickболее эффективный способ повторного запуска неудачных тестов.)обратите внимание, что номенклатура для теста в ScalaTest-это тестовый класс, а не конкретный метод тестирования, поэтому все методы без тегов выполненный.
если у вас слишком много методов тестирования в тестовом классе разбить их на отдельные классы или пометить их соответствующим образом. (Это может быть сигналом о том, что тестируемый класс нарушает принцип единой ответственности и может использовать рефакторинг.)

Comments