Как отключить набор тестов в ScalaTest

Как отключить набор тестов, т. е. все тесты внутри класса extending FunSpec?

единственное решение, которое я нашел, - это заменить it С ignore перед каждым тестом, но скучно делать это с десятками тестов.

4 ответов


самый простой способ сделать это в 1.8-добавить конструктор, который принимает аргумент-пустышка. ScalaTest (и sbt) не обнаружит класс, если у него нет открытого конструктора no-arg:

class MySuite(ignore: String) extends FunSuite { 
  // ...
}

в 2.0 вы сможете просто написать @Ignore в классе:

@Ignore
class MySuite extends FunSuite {
  // ...
}

можно использовать @Ignore и для определенных тестов и всего костюма.


Tag хлопотные тесты, а затем исключить или включить тесты на основе тега.

пометка-это одноразовое усилие.


Теги-один из вариантов, но вам нужно пометить каждый тест соответственно, вы не можете исключить полные костюмы таким образом. Однако, как упоминалось в user272735, тестирование тегов-это одноразовое усилие.

другой вариант-определение мастер-пакета и ограничение списка nestedSuites в люксы, которые вы хотели бы запустить (посмотреть документы). Очевидным недостатком является то, что вы должны поддерживать master Test suite, т. е. добавлять в него вновь созданные наборы тестов. Вы могли бы избежать этого рекурсия по папкам, создание списка всех тестовых костюмов, которые можно найти, и вычитание тех, которые вы положили в черный список. Кроме того, рекурсия по папкам уже дает вам возможность отфильтровать файлы, которые соответствуют (внешнему) заданному критерию.

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