问题标签 [property-based-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
343 浏览

clojure - clojure.test.check 生成两个整数,一个小于另一个

我想写一个如下的属性:

但是,该属性仅在 时成立x > y。表达此属性的前提条件的正确方法是什么?(更好的是,我如何编写这个属性,使其y生成为小于的自然数x?)

0 投票
1 回答
158 浏览

tdd - 基于负属性的测试

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

在测试解析器的情况下,我也很幸运地使用了“负面属性”,例如通过生成无效标识符或缩进敏感语言的不匹配缩进。但是“负面属性”是一种常见的表达和测试的东西吗?这意味着编写生成专门的虚假输入的生成器。

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

0 投票
1 回答
146 浏览

unit-testing - 我将如何对纸牌游戏的发牌功能进行基于属性的测试?

我正在研究基于属性的测试,并且很好奇如何将这种类型的测试应用到 BlackJack 游戏的 Deal 函数中。

这是一个单元测试(又名:基于示例的测试):

什么是基于属性的测试的示例?

  • 我会测试两张牌是否在 4 套花色范围内吗?(即黑桃、方块、红心、梅花) 依赖静态类型不会对我来说已经确保了吗?

  • 我会测试两张牌是否在数字或面的范围内?(即 2..10;Jack;Queen;King;Ace) 再一次,依赖静态类型不是已经为我确保了吗?

同样,在为二十一点游戏执行基于属性的测试时,我应该考虑什么?

0 投票
3 回答
143 浏览

.net - 如果随机生成的输入没有用,我如何重新尝试基于属性的测试?

我是单元测试的n00b。我已经从 Nuget 安装了FsCheck.NunitNUnitTestAdapter我正在尝试进行基于属性的测试,这在很大程度上受到了不可估量的 Scott Wlaschin 的启发。

我正在使用该[<Property>]属性,并且我希望能够“跳过”不符合测试要求的输入:

最简单的方法是什么?

如果 FsCheck/NUnit 存在,我更喜欢它的答案,但我也会考虑其测试可以在 Visual Studio 中运行的任何其他框架。(我以为我看到了一些框架,其中有一个简单的函数可以做到这一点,但我不知道它是什么。)

到目前为止,我更喜欢 FsCheck.NUnit,因为它可以为 F# 类型(可区分联合等)生成随机输入,而无需额外的工作。

0 投票
3 回答
1329 浏览

c# - 在 FsCheck 中生成唯一的字符串

我需要生成唯一的非null字符串用作Dictionary键。我试过类似的东西:

然后我用UniqueString()在:

但是,我在属性测试中遇到异常,Foo因为 FsCheck 有时会两次生成相同的字符串,从而导致DuplicateKeyException.

如何生成要传递给构造函数的唯一字符串Foo

0 投票
2 回答
1502 浏览

unit-testing - Scalacheck,大小为 5 到 12 的列表生成器

我可以找到许多为生成器设置最大大小的示例,但是如何生成介于最小长度和最大长度之间的列表?

0 投票
0 回答
163 浏览

mocking - 如何在 F# 中将 xUnit 和 FsCheck 与 IoC 和模拟一起使用

我想使用属性基础测试技术编写单元测试 F#。但是我遇到了几个障碍。

  1. 我要测试的代码是 C#
  2. 域对象来自 EF,即没有构造函数,只有可变属性
  3. sut 是一个需要大量构造函数注入的类。随着我们添加新功能,它们的数量会经常变化。当我们向构造函数添加新参数时,我们不想更改旧测试。
  4. sut 已经存在并且正在工作,因此将其模式更改为在构造函数中仅采用一个工厂参数将被视为测试引起的损坏,因此这是不行的
  5. FsCheck 无法生成开箱即用的实体框架对象,因此我们不得不为每个实体编写大型生成器 - 是否有任何库可以为我们完成此任务或使这项任务变得更容易?

换句话说,是否可以将 FsCheck 与 Ninject(我们在应用程序中使用它,因此添加新的也行不通)与一些自动实体生成器和模拟工具结合起来?

0 投票
0 回答
114 浏览

entity-framework - 生成随机对象作为测试用例

这个问题是更大问题的一部分,可以在这里找到

我们有来自实体框架的类。换句话说,它们不是不可变的记录,它们是没有构造函数的可变属性列表。FsCheck 无法开箱即用地处理此类实体,并且对于每个实体,我们被迫编写单独的生成器,如下所示:

正如您可以想象的那样,编写这样的东西的需要可能会阻止人们编写这种单元测试。

如何在 FsCheck 中为 C# EF 实体自动生成测试用例。

0 投票
1 回答
221 浏览

quickcheck - 使用基于属性的测试工具生成事件/命令?

据我了解,大多数属性测试工具都是在功能级别上运行的。给定一组参数,此类工具将针对某些不变量生成随机输入和测试输出。

我已经读到 ScalaCheck 现在开始包含事件的生成来测试一个有状态的系统。但是,我找不到关于它的大量信息。这是否也在 *check 生态系统的其他部分(fscheck、quickcheck、其他变体)中变得流行?

0 投票
1 回答
188 浏览

testing - conditionally running tests with build flags not working

I'm running some tests in golang and I want to avoid running the slow ones, for example this one uses bcrypt so it's slow:

To avoid running this in every iteration I've set up the // +build slow flag. This should only run when doing go test -tags slow but unfortunately it's running every time (the -v flag shows it's running).

Any idea what's wrong?