Как настроить sbt test / ScalaTest, чтобы показывать только сбои?


Есть ли способ усечь результаты теста, чтобы показывать текст результата только для модульных тестов, когда модульный тест не удался? Я работаю над проектом Scala, который имеет 850 модульных тестов, и зеленый текст успешных модульных тестов затрудняет фокусирование внимания только на неудачах.

Пример того, о чем я говорю:

[info] - should have colors
[info] - should not be dead
//.... x 100
[info] - animals should not be rainbows *** FAILED *** 
[info] -"[rainbow]s" was not equal to "[ponie]s" (HappinessSpec.scala:31)

То, что я хотел бы, - это то, что просто показывает неудачу (Неудачи):

[info] - animals should not be rainbows *** FAILED *** 
[info] -"[rainbow]s" was not equal to "[ponie]s" (HappinessSpec.scala:31)

Я понимаю, что есть команда test-quick sbt, но она все еще работает 300 успешный модульные тесты в моем случае, когда есть только 30 отказов.

Что-то в этом роде с точки зрения использования - это то, что я ищу:

sbt> ~ test -showOnlyFailures

Я также был бы доволен чем-то, что показывает все неудачи в конце бега модульный тест. IIRC, вот как RSpec работает в Ruby...

4 19

4 ответа:

После добавления в build следующего.sbt, scalaTest покажет сводку ошибок после стандартного отчета:

testOptions in Test += Tests.Argument("-oI") 

I - show reminder of failed and canceled tests without stack traces
T - show reminder of failed and canceled tests with short stack traces
G - show reminder of failed and canceled tests with full stack traces

Существует также флаг" drop TestSucceeded events", но я не смог его использовать: http://www.scalatest.org/user_guide/using_the_runner

Для тех, кто использует maven с плагином scalatest-maven, вы можете добавить следующую конфигурацию:

<configuration>
  <stdout>I</stdout>
</configuration>

Обновленный ответ для Scalatest 3.

Вот новый синтаксис для вашего файла build.sbt, чтобы перепечатать все ошибки в нижней части запуска набора тестов:

testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oI")

Вы также можете отключить информационные уведомления, чтобы легче было видеть сбои.

testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oNCXELOPQRM")

Вот что представляют собой все варианты:

  • n-drop teststarting events
  • C-drop TestSucceeded events
  • x-drop TestIgnored events
  • E-drop TestPending события
  • H-drop SuiteStarting events
  • L-drop SuiteCompleted events
  • O-drop InfoProvided events
  • P-drop ScopeOpened events
  • Q-drop ScopeClosed events
  • R-drop ScopePending события
  • M-drop MarkupProvided events

"-oI" выводит уведомления об ошибках снова в конце выполнения набора тестов, в то время как "-oNCXELOPQRM" показывает только те тесты, которые завершились неудачей.

См. раздел настройка репортеров на ScalaTest website для более подробной информации.

Вы можете попробовать команду sbt

last-grep error test

Это должно показать вам только ошибки / сбои.