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。我明白了,所以答案是角情况不保证,所以我们必须单独处理。我明白了,所以答案是角情况不保证,所以我们必须单独处理