Как настроить sbt test/ScalaTest только для показа сбоев?

Есть ли способ обрезать результаты теста, чтобы отображать только текст результата для модульных тестов только в случае неудачи unit test? Я работаю над проектом 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...

Ответы

Ответ 1

После добавления следующего к 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

Ответ 2

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

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

Ответ 3

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

last-grep error test

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

Ответ 4

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

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

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

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

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

Здесь перечислены все варианты:

  • События NString для тестирования событий
  • C - drop TestSucceeded events
  • X-drop TestIgnored events
  • События E-drop TestPending
  • События H-drop SuiteStarting
  • L - drop SuiteCompleted events
  • O - drop InfoProvided events
  • P - drop ScopeОткрытые события
  • Q - drop ScopeClosed events
  • R - падение событий ScopePending
  • M - drop MarkupProvided events

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

Подробнее см. раздел настройки реестров на веб-сайте ScalaTest.