【发布时间】:2016-04-20 16:56:32
【问题描述】:
我需要生成唯一的非null 字符串用作Dictionary 键。我试过类似的东西:
public static Gen<NonNull<string>> UniqueStrings()
{
return from s in Arb.Default.NonNull<string>().Generator
select s;
}
然后我使用UniqueString() in:
public static Arb<Foo> Foos()
{
// Foo's constructor will use the string parameter
// as key to an internal Dictionary
return (from nonNullString in UniqueStrings()
select new Foo(nonNullString.Item)).ToArbitrary();
}
但是,我在属性测试 Foo 时遇到异常,因为 FsCheck 有时会两次生成相同的字符串,从而导致 DuplicateKeyException。
如何生成唯一字符串以传递给Foo 的构造函数?
【问题讨论】:
-
我错过了什么吗?基于 Guid 的
Guid.NewGuid().ToString();将是唯一的字符串。
标签: c# fscheck property-based-testing