2016-12-15 8 views
0

В specs2 указан список реализаций, которые должны удовлетворять заданному набору тестов. Как я могу пропустить реализации, которые недоступны в текущей среде, но все же отображает сообщение, информирующее пользователя о том, что тесты были пропущены для данной реализации?Как пропустить реализацию с specs2

Я попытался это, но сообщение не отображается, если реализация не доступна

case class ImplToTest(name: String, impl: Option[Impl]) 

val toTest: List[ImplToTest] = ... 
val testSuite: Impl => Fragment = ... 

toTest.foreach { underTest => 
    s"${underTest.name}" >> underTest.map(testSuite).getOrElse(org.specs2.specification.create.DefaultFragmentFactory.text("This implementation is being skipped")) 
} 

ответ

1

Would что-то вроде этой работы для вас?

class TestSpec extends org.specs2.mutable.Specification { 

    val implementations = List("now", "never", "always") 

    implementations.foreach { implementation => 
    if (implementation == "never") 
     s"$implementation" >> skipped("NOT NOW") 
    else 
     s"$implementation" >> { 
     "do this" >> ok 
     "do that" >> ok 
     } 
    br 

    } 
} 
+0

Да, это работает, спасибо. Хотя реализация менее симпатичная и более эффективная. Это изменение, которое я сделал: https://github.com/jedesah/Quasar/commit/1713d07749d38024553c7e7cdd58adc027545f2b. Есть ли способ выполнить одно и то же, не делая возвращаемого типа функции 'Unit'? – jedesah

+0

Если вы замените 'fss.toList.foreach' на' Fragments.foreach (fss) ', не возвращаете ли вы' Фрагменты' вместо 'Unit'? – Eric

+0

Если я это сделаю, типы, похоже, не совпадут. Возможно, моя ошибка в API-интерфейсах Fragments виновата. Я знаю, что только что сделанный выше переключатель запускает ошибку компиляции, ожидаемую 'Fragments', но нашел' org.specs2.execute.Skipped' в строке 69 – jedesah

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

  • Нет связанных вопросов^_^