Я пытаюсь использовать ScalaTest со 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 test; иногда оба теста проходят.
Это нормально для тестирования на основе свойств, или мне нужно что-то делать (например, всегда предоставлять свой собственный генератор)?