在AutoFixture中生成一个长字符串

时间:2016-10-11 15:21:34

标签: c# autofixture

我想生成一个随机字符串 - 比如长度为80。

我在想Fixture.Create<string>(length: 80);之类的东西 或Fixture.Create<string>(minimumLength: 60, maximumLenth: 100);。两者都可以完美地运作。

创建自定义似乎过度,但也许这是正确的方法。关于获取更短的字符串有很多问题,而不是默认字符串,这可以用子字符串来实现,但我需要更长的字符串。

3 个答案:

答案 0 :(得分:2)

试试这个:

string.Join(string.Empty,Fixture.CreateMany<char>(stringLength))

stringLength是您希望生成的字符串的长度。

默认情况下,Fixture.Create<string>()会创建一个长度为36的字符串 因此,如果您希望字符串长度超过36,则此代码将生成长度为72的字符串:

string.Join(string.Empty,Fixture.CreateMany<string>(2))  

答案 1 :(得分:1)

查看this问题。

这表示StringLength属性可以帮助生成给定长度的字符串。

还有来自图书馆维护者的article。在本文中,他说像方程fixture.Build<MyObject>.With(x = x.MyString, 0, 100);这样的方法不会通过设计考虑来实现。

因此,如果您不想使用该属性,则必须使用Customization

运行

答案 2 :(得分:0)

没有直接的方法来实现这一点,因为已经pointed out by Michael

我最接近的是使用 Fixture.CreateMany<string>(3).Join("")。感谢Mark Seemann的提示。

我只想要一个超过50个字符的字符串,但不关心它是100还是300.如果我想要一个精确的长度,我也可以打电话给Fixture.CreateMany<string>(3).Join("").Substring(length)