Я пытаюсь использовать ScalaTest с ScalaCheck для тестирования на основе свойств. У меня есть тесты, описанные ниже:ScalaCheck не подводит?
import org.scalatest.prop.PropertyChecks
import org.scalatest.{FlatSpec, Matchers}
object Calc {
def add(a:Int, b:Int) = a+b
def div(a:Int, b:Int) = a/b
}
class PropSpec1 extends FlatSpec with Matchers with PropertyChecks {
behavior of Calc.getClass.getName
it should "add integers" in {
forAll { (a: Int, b: Int) =>
Calc.add(a, b) shouldEqual a + b
}
}
it should "divide integers" in {
forAll {
(a:Int, b:Int) => Calc.div(a, b) shouldEqual a/b
}
}
}
Теперь то, что я вижу в том, что если я продолжу запуск тестов в PropSpec1 снова и снова, иногда второй тест проходит, но большая часть времени она не сможет. Теперь, если 0 не проверено на b, то, очевидно, это пройдет, но я бы подумал, что это одна из вещей, которые она всегда будет пытаться. Я вижу такое же поведение при повторном тестировании sbt clean; иногда проходят оба теста.
Это нормально для тестирования на основе свойств, или есть что-то, что мне нужно делать (например, всегда предоставляя собственный генератор)?
Спасибо ... Я знаю о любом случае. Я больше заинтересован в том, чтобы заставить его попробовать крайние случаи или, по крайней мере, сказать, что он должен помнить, чтобы попробовать 0 (что в данном случае не имеет смысла, но является более общей проблемой). Есть что-то для этого? – ashic
Насколько мне известно, вам придется предоставить собственный генератор. Может быть, есть и другой способ, может быть, кто-то еще зазвонит. –