基于负特性的测试



当您可以表达简单且定义良好的属性时,基于属性的测试是很好的。

在测试解析器的情况下,我也遇到了"负属性"的问题,例如,为缩进敏感的语言生成无效的标识符或不匹配的缩进。但是,"负特性"是一种常见的表达和测试方式吗?这意味着编写生成专门的、伪造的输入的生成器。

有哪些与解析器无关的负面属性的真实例子?

我基本上有同样的问题。

我已经发布了更详细的信息,以及迄今为止我对如何实现这一目标的所有想法:

生成负Scalacheck场景的模式:使用基于属性的测试来测试Scala 中的验证逻辑

对我们来说,"现实世界"的情况是,我们有大型的、数据绑定的案例类,这些案例类具有验证逻辑(我们使用Wix Accord进行验证)。为了彻底测试验证逻辑,我们需要创建一个对象,使其一个属性无效,并查看validate(o)是否失败。然后对对象上的每个属性重复此操作。

我们还会遇到特定的情况,其中特定的属性需要无效。例如,检查我们的系统是否能正确处理无效的ID。这更容易,我们只需使用forAll(someGen)并对其进行变异。实际上,只有v => val invalidV = v copy(id = "badID"),现在对于每个生成的属性,我都对其进行了变异,使其具有错误的ID。当然,你可能会更喜欢,但你已经明白了。

所有这些都在我的另一篇文章中总结。。。同时公开征集"最佳模式"。希望能得到一些好主意!

相关内容

  • 没有找到相关文章

最新更新