Есть ли у Scalatest поддержка предположений? - PullRequest
5 голосов
/ 17 августа 2011

Что касается заголовка, мне интересно, можно ли предоставить «допущения» для Scalatest при определении конкретного контрольного примера. Предположения в этом контексте были бы предварительными условиями для теста, так что если предположение оценивается как ложное, тест будет пропущен, а не выполнен (и обработан соответствующим образом бегунами).

В этом конкретном случае я имею в виду зависимости между тестами - так что может быть базовый тест, который проверяет, возвращает ли метод что-либо вообще , а затем более поздние тесты, которые углубляются в специфику ответ. Если первый тест не пройден, я бы предпочел, чтобы последний тест был помечен как «неработоспособный» каким-либо образом, а не так, чтобы он тоже не прошел.

Тем не менее, я могу себе представить, что буду использовать это в будущем для определения некоторых несвязанных предварительных условий (например, на жестком диске должно быть не менее 20 МБ свободного места), поэтому, если есть общий способ скиппинга теста во время выполнения (в отличие от использования ignore или pending) Я бы предпочел услышать это.

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

Ответы [ 2 ]

5 голосов
/ 27 января 2014

В ScalaTest 2.0 (я думаю) добавлена ​​поддержка допущений:

Утверждения черты также предоставляют методы, которые позволяют отменить тест.Вы бы отменили тест, если требуемый для теста ресурс был недоступен.Например, если тест требует, чтобы внешняя база данных была подключена к сети, а это не так, тест можно отменить, чтобы указать, что он не может быть запущен из-за отсутствия базы данных.Такой тест предполагает, что база данных доступна, и вы можете использовать метод предположения, чтобы указать это в начале теста, например:

assume(database.isAvailable)

http://www.scalatest.org/user_guide/using_assertions

1 голос
/ 17 августа 2011

Scalacheck, который часто используется в сочетании с scalatest, может сделать это:

import org.scalacheck._

object XSpecifictaion extends Properties ("X") { 

    property ("sample (a - b)") = Prop.forAll { (a: Int, b: Int) =>  
      (a < b || (a - b >= 0)) }
}

!(a = 0) реальный тест;Вы выполняете только последнее, если предположение верно, поэтому вы отрицаете свое предположение и комбинируете его с сочетанием клавиш ИЛИ.

...