2011-01-03 8 views
1

私は文字列パラメータを与えられた一連の単体テストのバリエーションを生成する単一の関数を持っています。どのようにしてファクトリメソッドの文字列パラメータを取るかを取るファクトリ属性(または何らかの代替メソッド)を使用することはできますか?mbunitファクトリメソッドに文字列パラメータを渡すには?

私はGallio/mbUnitで自動テストフレームワークを使用しています。

答えて

2
[TestFixture] 
public class SampleFixture 
{ 
    [Column("123", "456")] 
    private string parameter; // Causes the fixture to be run once for each value. 

    public IEnumerable<string> GetData() 
    { 
     yield return "abc" + parameter; 
     yield return "def" + parameter; 
     yield return "ghi" + parameter; 
    } 

    [Test, Factory("GetData")] 
    public void MyDataDrivenTest(string text) 
    { 
     TestLog.WriteLine(text); 
    } 
} 

あなたはGallio wikidata-driven testsに関する記事を読みたいと思うかもしれません。 [Row],[Column]などのMbUnitによるデータ駆動型テストの作成に便利な機能を使用する方法の例が多数見つかります。

UPDATE:上記の例では、ファクトリからのデータを外部パラメータに連結しました。テストは6回実行されます( "abc123"、 "def123"、 "ghi123"、 "abc456"、 "def456"、 "ghi456")。しかし、あなたは別の方法でパラメータを使うことができます。 GetDataの動作全体を変更するなどの方法があります。

+0

ありがとうございます。私の質問は、あなたの例では、GetDataメソッドに文字列を渡して、テストデータとして返すものを決定する方法です。 – tgiphil

+0

正確にわからない。 GetDataは必要なものを返すことができ、必ずしも利回りのリストではありません。たとえば、リポジトリ、カスタムジェネレータ、または任意の種類のデータファクトリなどの外部データソースからデータを取得できます。たぶんあなたは達成したいものの例を提供することができます。その文字列パラメータはどこから来ますか?ユーザー入力、データベース、設定ファイル? –

+0

文字列を受け取り、ユニットテスト用にIEnumerable を返すメソッドを呼びたいと思います。このメソッドは、データを生成するために文字列を渡す必要があります - 基本的には、指定された文字列に基づいて順列の束を生成します。だから私が探していたのは次のような属性だった:[Test、Factory( "GetData")、 "123"]メソッドIEnumerable をGetData(文字列キー)をキーとして "123"で呼び出す。 – tgiphil

関連する問題