В моем предыдущем вопросе Курт указал мне на этот код FsCheck о настройке типа Arbitrary
.
У меня есть следующее Arbitrary
(отказ от ответственности: я понятия не имею, что я делаю..., по-прежнему нахожу FsCheck общеизвестно трудным для понимания, но я решительно настроен заставить его работать), что само по себе является упрощенной версией того, что я созданные ранее:
type MyArb() =
inherit Arbitrary<DoNotSize<int64>>()
override x.Generator = Arb.Default.DoNotSizeInt64().Generator
И я использую его по инструкции:
[<Property(Verbose = true, Arbitrary= [| typeof<MyArb> |])>]
static member MultiplyIdentity (x: int64) = x * 1L = x
Это дает мне (несколько обнадеживающее) сообщение об ошибке, что я что-то упустил:
System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
----> System.Exception : No instances found on type Tests.Arithmetic.MyArb. Check that the type is public and has public static members with the right signature.
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at FsCheck.Runner.checkMethod(Config config, MethodInfo m, FSharpOption`1 target) in C:\Users\Kurt\Projects\FsCheck\FsCheck\src\FsCheck\Runner.fs:line 318
at FsCheck.NUnit.Addin.FsCheckTestMethod.runTestMethod(TestResult testResult) in C:\Users\Kurt\Projects\FsCheck\FsCheck\src\FsCheck.NUnit.Addin\FsCheckTestMethod.fs:line 100
Оглядываясь назад на этот код Github, я вижу два класса Atrbitrary
, но ни один из них не имеет наследования, и оба они имеют разные статические члены.
Как я могу создать генератор случайных чисел и статически назначить его в качестве произвольного для моих тестов NUnit?