【发布时间】:2015-10-13 22:41:17
【问题描述】:
使用F#版本的Haskell QuickCheck测试库FsCheck从C#生成测试,发现随机字符串生成器不生成空字符串。
using FsCheck.Fluent;
Spec.ForAny<string>(s => s != null).QuickCheck(); // always pass
此外,似乎没有设计处理空字符串,但我没有设法将其固定from the documentation。例如,仅在两个字符串(其中一个为 null)之间进行选择是行不通的:
var strings = Any.ValueIn<string>(null, "non-null string");
Spec.For(strings, s => true).QuickCheck(); // throws null ref exception
而字符串似乎是个特例,因为它处理诸如
之类的定制对象class Thing {}
当与空值混合时:
var objects = Any.ValueIn(null, new Thing());
Spec.For(objects, s => true).QuickCheck(); // pass
【问题讨论】: