2017-09-06 26 views
1

背景:(FSCheckは型式のテストに適していますか?

  1. ノーセッター(不変)
  2. 1人のコンストラクタ
  3. パラメータ名は、プロパティの名前が設定されている一致します

    私は、次の規則を満たす多数のコマンドを持っていますケーシング以外)

次のテストを行うテスターを書きたいと思います。
  1. すべての引数が指定されているとすれば、クラスのインスタンスが取得され、すべてのプロパティは渡された値に設定されます。
  2. 与えられたパラメータのいずれか1つが型コンストラクタに基づいてnull、空白などのいずれかである場合、引数の例外が発生します。

これをリフレクション、ハンドロール、問題なしで書くことができますが、FsCheckジェネレータを使用してパラメータを生成できるかどうかは疑問でした。

これは私がFSCheckで達成できるものですか?

答えて

0

はいできます。実際、FsCheckが引数の型を生成できる場合(つまり、文字列や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インスタンスの束を生成します。

関連する問題