簡體   English   中英

使用C#使用FsCheck生成隨機字符串

[英]Generate random string with FsCheck using C#

我想逐步將FsCheck集成到我的C#測試代碼中(作為第一步)。

我想隨機生成部分輸入數據。

這是我生成隨機字符串的方式:


static string RandomString() {
  var kgen = Gen.Constant(Gen.Sized(g => Gen.OneOf(Arb.Generate())));
  var sgen = Gen.Sample(1, 10, kgen).First();
  var str = Gen.Eval(10, Random.StdGen.NewStdGen(0, 1000), sgen);
  return str;
}

如果我多次調用它,我每次都會得到相同的字符串。

如何每次獲取不同的字符串和/或正確編寫此代碼?

您應該使用屬性替換測試,而不是嘗試生成隨機字符串,然后手動使用測試中的字符串。 FsCheck不適合將其用作隨機生成器,盡管可以將其強制轉換為隨機生成器。 就像是:

var maxLength = 10
return Arb.Generate<string>().Sample(maxLength, 1).Single()

應該生成一個新的隨機字符串,長度最多為10“,大部分時間”,即如果我沒記錯的話,隨機種子是基於時間的。 因此,如果您在同一時間間隔內調用它兩次,它將返回相同的字符串。

這樣做不會讓你利用縮小和Prop的API來觀察和分類生成的數據,例如限制它: https//fscheck.github.io/FsCheck/Properties.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM