fscheck

    2热度

    1回答

    如何将配置应用于一组基于属性的测试? 我试过如下: let config = { Config.Quick with MaxTest = 10000 QuietOnSuccess = true } [<Property(Config=config)>] // Doesn't work because "Config" is a private member let `

    3热度

    1回答

    我正在写一个FSCheck生成器创建具有以下属性字符串: 他们都是非空 修剪它们不会影响长度 它们不包含空格。 这里是我的生成代码: namespace Example open FsCheck.Arb module public Generation = let hasChars (s : string) = (isNull s |> not) &&

    2热度

    1回答

    如何在执行基于属性的测试时建立测试输入条件? 例如,下面的代码生成布尔变量,当我需要整型: Gen.map (fun v -> v > 0) 这里的功能: [<Property(QuietOnSuccess = true)>] let ``number of cells in grid equals rowcount squared``() = let values = Arb.g

    4热度

    1回答

    我使用FsCheck的Gen生成自定义数据。 假设有一个函数返回Gen<'T>: let chooseRectangle widthMax heightMax offset = gen { let! left = Gen.choose(0, widthMax-offset) let! top = Gen.choose(0, heightMax-offset)

    2热度

    1回答

    我正在C#中使用xUnit和FsCheck在F#中编写测试,并且在尝试检查时遇到了一些麻烦如果在用户输入无效的情况下抛出异常(任何不是没有任何区分符号的字母表字符)。下面的代码看起来像现在: 的方法进行测试: public static string Make(char letter) { if (!Regex.IsMatch(letter.ToString(), @"[a-zA-Z]

    0热度

    1回答

    我定义了一个包含少数自定义生成器的类型,以使FsCheck生成几种类型的自定义实例。但对于其中一种复杂类型,我想先使用默认的FsCheck生成,然后调整结果。这里有一个(简化)代码: type CustomGenerators = static member FirstCustomType() = /* function that returns FirstCustomType */

    2热度

    1回答

    FsCheck允许其NUnit的集成定制Arbitrary: [<Property(Verbose = true, Arbitrary= [typeof<Test.Arithmetic.MyArb>])>] static member MultiplyIdentity (x: int64) = x * 1 = x 这句法不起作用。我觉得有点不好意思问,但显然我从来没有需要这样做:你如何在F#

    1热度

    1回答

    我正在写一些生成器和一个任意的,但速度太慢(也请参阅GC数字)。我想我的代码有错误,但我无法弄清楚在哪里。或者我的做法(map2 (fold))是“怪异的”? 发生器: type Generators() = static let notAllowed = Array.append [| '0'..'9' |] [| '\n'; '\r'; '['; ']'; '/'; |]

    2热度

    1回答

    运行FsCheck你好我试图用xunit.runner.console运行FsCheck.Xunit测试,并收到以下异常: Kata.TennisProperties.Given advantaged player when advantaged player wins score is correct [FAIL] System.Reflection.TargetInvocationE

    1热度

    1回答

    我试图让一个C#FsCheck生成器生成一系列命令,它们是用随机字符串初始化的 。我想出了 以下解决方案: public Gen<Command<A,B>> Next(B value) { var gen1 = Arb.Default.String().Generator; var gen2 = Gen.two(gen1); var gen3 = gen2.sele