2012-06-29 3 views
11

Мы используем особенность Spec для наших тестов в ScalaTest. когда мы запускаем весь пакет, он не всегда работает в том же порядке. Большинство ответов в google предлагают определение пакета и указание всех имен тестов. Но это требует от нас добавления тестового имени каждый раз, когда мы добавляем новый тест.Как проводить тесты всегда в одном порядке в Scalatest?

Возможно ли использовать DiscoverySuite и определить порядок выполнения теста? Подобно запускам тесты в алфавитном порядке. Я посмотрел на расширение DiscoverySuite, но DiscoverySuite, похоже, является приватным для сканирования.

--- Подробнее ----

При заказе я имею в виду, если есть тесты A, B, C.

 
class A extends Spec {..} 
class B extends Spec {..} 
class C extends Spec {..} 

Тогда я хочу, чтобы тесты для запуска в порядке (A, B, C). Но что происходит сейчас, он запускается в другом порядке каждый раз.

+5

FWIW, тесты должны быть определены таким образом, чтобы порядок выполнения не имел значения. Это делает индивидуальные тесты более устойчивыми (изменение теста A не прерывает тест B), проще понять (чтобы понять тест A, я должен только проверить тест A) и независимый (я могу запускать только те тесты, которые мне нужны). – leedm777

+0

Я понимаю и полностью согласен с тем, что тесты должны быть определены так, чтобы порядок не имел значения. Но, к сожалению, это функциональные (Webdriver) тесты, и их много. Итак, как первый шаг их исправления, я хотел, чтобы они запускались в том же порядке и, в среднем, анализировали, в чем проблема. –

ответ

10

DiscoverySuite является приватным для ScalaTest, да. Например, порядок выполнения тестов в Spec (теперь называемый FunSpec) определяется как порядок появления в исходном файле. Чтобы определить порядок самих тестовых классов, вам нужно будет определить метод nestedSuites и запустить этот пакет-оболочку вместо использования Discovery. Вы можете вернуться к использованию открытия, когда вам больше не нужен заказ. Я рассмотрю добавление определенного порядка в DiscoverySuite в следующей версии ScalaTest.

+0

Как я объяснил выше, я хочу, чтобы тесты выполнялись в алфавитном порядке, так что если тест не удается, я могу воспроизвести его снова. На данный момент у нас есть много причин, почему тест может потерпеть неудачу. Просто хочу вынуть тестовый порядок из уравнения и проанализировать другие сбои. Как только другие причины будут меньше, мы удалим заказ. –

+0

Аналогично этому, я нахожу, что модель наследования тестов может быть полезна. На данный момент у меня тест B не работает, но до его запуска тестируется тест C (который использует B), очевидно, не работает. Могу ли я объявить, что C должен запускаться только в том случае, если B проходит? – akauppi

+0

Может быть полезно: http://doc.scalatest.org/2.0/index.html#org.scalatest.Suite –

Смежные вопросы