ScalaTest в sbt: есть ли способ запустить один тест без тегов?



Я знаю, что один тест можно запустить, запустив, в sbt,



test-only *class -- -n Tag


есть ли способ сказать sbt / scalatest, чтобы запустить один тест без тегов? Например:



test-only *class -- -X 2


это будет означать " выполнить второй тест в классе. Что бы это ни было". У нас есть куча тестов, и никто не потрудился пометить их, так есть ли способ запустить один тест без тега?

439   3  

3 ответов:

Теперь это поддерживается (начиная с ScalaTest 2.1.3) с помощью:

testOnly *MySuite -- -z foo

для выполнения только тех тестов, имя которых содержит подстроку "foo".

для точного совпадения, а не подстроки, используйте -t вместо -z.

Я хотел бы добавить конкретный пример, чтобы сопровождать другие ответы

вам нужно указать имя класса, который вы хотите протестировать, так что если у вас есть следующий проект (это игровой проект):

Play Project

вы можете проверить только 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

    Ничего не найдено.