Testing 在基于属性的测试中如何保证角点情况

Testing 在基于属性的测试中如何保证角点情况,testing,scalacheck,property-based-testing,Testing,Scalacheck,Property Based Testing,最近,当我读到关于基于属性的测试的想法时,我非常激动 但我有一个问题,我仍然无法在任何地方找到答案: 基于属性的测试如何确保每次都能测试角落案例? 更具体地说,假设我正在使用测试我的除法函数: def divide(a: Int, b: Int): Int 由于测试用例是随机生成的,我如何确保ScalaCheck每次都会检查b=0?特殊用例通常是它们自己的属性。如果您试图编写一个包含b=any integer的案例,那么您的所有属性都将在一个大型复杂的测试中结束。但您可以将参数空间拆分为多个块

最近,当我读到关于基于属性的测试的想法时,我非常激动

但我有一个问题,我仍然无法在任何地方找到答案:

基于属性的测试如何确保每次都能测试角落案例?

更具体地说,假设我正在使用测试我的除法函数:

def divide(a: Int, b: Int): Int

由于测试用例是随机生成的,我如何确保ScalaCheck每次都会检查
b=0
?特殊用例通常是它们自己的属性。如果您试图编写一个包含
b=any integer
的案例,那么您的所有属性都将在一个大型复杂的测试中结束。但您可以将参数空间拆分为多个块,例如:

  • b=正整数
  • b=负整数
  • b=0

并分别检查它们。

特殊情况通常是它们自己的属性。如果您试图编写一个包含
b=any integer
的案例,那么您的所有属性都将在一个大型复杂的测试中结束。但您可以将参数空间拆分为多个块,例如:

  • b=正整数
  • b=负整数
  • b=0

然后分别检查它们。

一些PBT工具总是在生成随机案例之前注入角案例


例如,jqwik(用于Java)会在任何随机值之前尝试0、1、-1、Integer.MIN…值和Integer.MAX…值。

一些PBT工具总是在生成随机值之前插入角案例


例如,jqwik(用于Java)会在任何随机值之前尝试0,1,-1,Integer.MIN…VALUE和Integer.MAX…VALUE。

我明白了,所以答案是角情况不保证,所以我们必须单独处理。我明白了,所以答案是角情况不保证,所以我们必须单独处理