Scalacheck/Scalatest с параметрическими типами

Я хочу протестировать общий стек с помощью scalatest и scalacheck. Пока у меня это:

"Stack" should "pop the last value pushed" in {
  check(doPushPop(element))
}

def doPushPop[T](element : T) : Boolean = {
  val stack = new Stack[T]
  stack.push(element)
  stack.pop() == element
}

Однако это явно не компилируется. Как указать универсальный тип в рамках теста?


person ConditionRacer    schedule 02.11.2014    source источник


Ответы (1)


если вы хотите генерировать случайные значения, например. целые:

check(doPushPop(_: Int))

но вместо тестирования с одним значением вы должны вместо этого сгенерировать последовательность действий push/pop и проверить некоторый инвариант; стеки, очевидно, не зависят от значений, которые вы в них помещаете, поэтому я бы сказал, что нет особого смысла проводить такой тривиальный тест, как приведенный выше.

Вместо этого вам следует прочитать о том, как тестировать системы с отслеживанием состояния с помощью ScalaCheck:

http://www.scalacheck.org/files/scaladays2014/index.html

person Erik Kaplun    schedule 02.11.2014
comment
Я не понимал, что есть разница. Спасибо за ссылку - person ConditionRacer; 02.11.2014