FSCheck适合测试类型构造吗?

时间:2017-09-06 16:53:12

标签: xunit.net fscheck

背景:

我有大量符合以下规则的命令:

  1. 没有setters(不可变)
  2. 一个构造函数
  3. 参数名称与要设置的属性的名称匹配(除了大小写)
  4. 我想编写一个测试以下

    的测试人员
    1. 鉴于提供了所有参数,我得到了一个类的实例,并且所有属性都设置为传递的值。
    2. 根据类型构造函数提出的参数异常,任何一个被调用的参数都是null,为空等。
    3. 现在,我可以通过反射来写这个,手动滚动,没问题,但我想知道是否可以使用FsCheck生成器来生成参数。

      这是我用FSCheck可以实现的吗?

1 个答案:

答案 0 :(得分:0)

是的,它可以。实际上,如果FsCheck可以生成参数的类型(即,如果它们是基本类型,如string或int,或者可以反射生成),那么从您的描述中,FsCheck已经可以开箱即用生成这些类型,而无需您执行任何操作。

例如,类似这样的类型:(我假设您正在使用C#)

public class Foo {
    public string A { get; }
    public int[] B { get; }
    public Foo(string a, int[] b) {
       A = a;
       B = b;
    }
}

可以由FsCheck生成,您可以使用FsCheck.Xunit编写一个xunit测试,如下所示:

[Property]
public void FooTest(Foo oneRandomFoo, Foo[] manyRandomFoos) {
    // assert something about the foos
}

FsCheck会为你生成一堆随机的Foo实例。