2016-01-17 2 views
0

Я пытаюсь указать порядок выполнения спецификаций Spec2, я знаю о ключевом слове sequential, который гарантирует, что они запускаются один за другим, но это соответствует испытаниям в Спецификации (и фактически не гарантирует никакого заказа)Определить порядок Specs2 Выполнение спецификации с SBT

Я нашел это так вопрос: https://stackoverflow.com/a/15832297/1757402 который выглядел многообещающим, но опять же, кажется, просто сортировать тесты в пределах спецификации

Я предполагающая SBT/Спекуляцию запускает спецификации в порядке в которой JVM возвращает классы, есть ли способ изменить это? Или любой способ гарантировать заказ?

Так что у меня есть следующие характеристики:

CApplicationSpec.scala

@RunWith(classOf[JUnitRunner]) 
class CApplicationSpec extends Specification { 
    "CApplicationSpec" should { 
    "be OK" in new WithApplication{ 
     OK must equalTo(OK) 
    } 
    } 
} 

BApplicationSpec

@RunWith(classOf[JUnitRunner]) 
class BApplicationSpec extends Specification { 
    "BApplicationSpec" should { 
    "be OK" in new WithApplication{ 
     OK must equalTo(OK) 
    } 
    } 
} 

В данный момент, если я проверить это, порядок исполнения могут меняться каждый раз, , Я хочу, чтобы уметь гарантировать, что BApplication (или любой другой Spec) всегда будет работать первым, может быть, отсортировав их по алфавиту?

+0

Зачем вам нужен ваш тест для запуска в порядке? –

+0

@ Łukasz Когда конкретные действия, которые происходят в других тестах, выполняются перед конкретными тестами, они вызывают отказ тестов из-за исключений исполнителей потока – RichyHBM

ответ

0

Вы можете создать спецификацию, которая будет "link" другие спецификации и запустить их в определенном порядке:

object AllSpecifications extends Specification { def is = s2""" 
    ${"run BSpecification" ~ BSpecification} 
    ${"run CSpecification" ~ CSpecification} 
""" 
} 
0

я в конечном итоге делает это через SBT с testGrouping

//Put all tests into a single Group so that SBT reports correct number of tests, but order them by test name 
testGrouping in Test <<= definedTests in Test map { tests => { 
    val sortedTests = tests map { 
     test => new Tests.Group(test.name, Seq(test), Tests.InProcess) 
    } sortBy (_.name.toLowerCase) flatMap { 
     _.tests 
    } 
    Seq(new Tests.Group("Tests", sortedTests, Tests.InProcess)) 
    } 
} 

Заказов все тесты в алфавитном порядке (включая название пакета) У меня есть все спецификации, которые я хочу запустить сначала в определенном пакете

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