2017-07-19 10 views
-1

私はデータをフィルタリングするフィルタオプションのセットを持つアプリケーションのために働いています。入力の組み合わせのためのユニットテスト

私のメソッドが動作する入力の各組み合わせをテストしたいと思います。例えば、以下のような組み合わせごとに単体テストを書く必要がありますか?

[TestClass] 
public class Data_Should_Filter 
{ 
    [TestMethod] 
    public void _For_Category() 
    { 

    } 

    [TestMethod] 
    public void _For_Product_And_Category() 
    { 

    } 

    [TestMethod] 
    public void _For_Product_CreationDate() 
    { 

    } 
} 

単一のテストで各データの組み合わせをテストする方法はありますか? NUnitテストでblogを確認します。この種のテストを実現するための可能な方法と、組み合わせテストをサポートするフレームワークは何か。

答えて

2

はい、それはNUnitの2.5で可能だと

[TestCase(12,3,4)] 
[TestCase(12,2,6)] 
[TestCase(12,4,3)] 
public void DivideTest(int n, int d, int q) 
{ 
    Assert.AreEqual(q, n/d); 
} 

いくつかの詳細はhere

+0

ありがとうございますが、ここでTestCaseを提供する必要があることがわかります。私は、これを自動的に行うことができるフレームワークがあるかどうかを知りたい。私はFsCheckが動作することを調査しましたが、経験はありません。 –

+1

コードを読んで単体テストを自動的に作成するものが必要ですか?私はプログラマや開発者などと呼ばれていると思う。 –

+0

その場合は、https://github.com/nunit/docs/wiki/Theory-Attributeを調べるとよいでしょう。 –

0

の上にそれはNUnitのと確かに可能です:

[TestFixture] 
    public class Data_Should_Filter 
    { 
     [Test] 
     [TestCase(new Product(1), new Category(2), DateTime.UtcNow)] 
     [TestCase(new Product(2), new Category(2), DateTime.UtcNow)] 
     public void TestFilter(Product product, Category category, DateTime creationDate) 
     { 

     } 
    } 
-1

ランダムな組み合わせのために使用することができ、このライブラリを発見テスト: FsCheck

0

あなたは自動的に結合したいものの例を与えていないので、私はこの答えのためにそれを発明しなければなりませんでした。

NUnitには、テストメソッドの単一のパラメータに対応する引数としてデータを指定する方法と、それらの引数を組み合わせるいくつかの方法があります。

引数を指定します。 * ValuesAttribute * ValueSourceAttribute * RandomAttribute * RangeAttribute

上記の値の組み合わせを生成します。 * CombinatorialAttribute(あなたが何かを使用しない場合は、この1がデフォルトです) * PairwiseAtributeを * SequentialAttribute

例...

[Test] 
public void TestProcuctAndCategory(
    [Values("ProductA", ProductB")] string productName, 
    [Values("Cat1", "Cat2", "Cat3")] string category) 
{ 
    // Test will be executed six times, using all combinations 
    // of the values provided for the two arguments. 
} 
関連する問題