他のヒント

はここでティム・アベルのしかしCSVリーダーのためのフレームワークを使用して、テストの詳細を示していないと非常に類似した別の例です。 (注)TestCaseAttributeを使用する場合TestAttributeを省略することができます。

        [TestCaseSource("GetDataFromCSV")]
    public void TestDataFromCSV(int num1,int num2,int num3)
    {
        Assert.AreEqual(num1 + num2 ,num3);
    }

    private IEnumerable<int[]> GetDataFromCSV()
    {
        CsvReader reader = new CsvReader(path);
        while (reader.Next())
        {
            int column1 = int.Parse(reader[0]);
            int column2 = int.Parse(reader[1]);
            int column3 = int.Parse(reader[2]);
            yield return new int[] { column1, column2, column3 };
        }
    }


public class CsvReader : IDisposable
{
    private string path;
    private string[] currentData;
    private StreamReader reader;

    public CsvReader(string path)
    {
        if (!File.Exists(path)) throw new InvalidOperationException("path does not exist");
        this.path = path;
        Initialize();
    }

    private void Initialize()
    {
        FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
        reader = new StreamReader(stream);
    }

    public bool Next()
    {
        string current = null;
        if ((current = reader.ReadLine()) == null) return false;
        currentData = current.Split(',');
        return true;
    }

    public string this[int index]
    {
        get { return currentData[index]; }
    }


    public void Dispose()
    {
        reader.Close();
    }
}

CSVデータ:

10200210 20190210 30180210 40170210 50160210 60150210 70140210 80130210 90120210 100110210

注:3列目は、最初の2つの列の和であり、これは、ユニットテストにアサートされる

結果:

結果

TestCaseDataを使用する代替の下に検索オブジェクトと戻り型(必須でオフコース)

設定
        [TestCaseSource("GetDataFromCSV2")]
    public int TestDataFromCSV2(int num1, int num2)
    {
        return num1 + num2;
    }

    private IEnumerable GetDataFromCSV2()
    {
        CsvReader reader = new CsvReader(path);
        while (reader.Next())
        {
            int column1 = int.Parse(reader[0]);
            int column2 = int.Parse(reader[1]);
            int column3 = int.Parse(reader[2]);
            yield return new TestCaseData(column1, column2).Returns(column3);
        }
    }

MS試験は、異なるソースからのテストデータを持っているメカニズムを提供します。しかし、これは、NUnitのからボックスの利用できていないです。

私はいくつかのかなりの大きさであるテストのためのデータとコードを分離する使用に賛成しています。私は両方を分離すると、私の期待があります テストデータの1可読性 2.テストデータを修正するために簡単なはず ローカルおよびビルド環境で快適に実行する必要があります。3.ユニットテスト

JsonSectionReader の下には、私が持っているしたいというすべての機能を備えています。 このツールは、埋め込まれたJSONファイルからのデータのセクションを読み取ることができます。また、デシリアライズに非常に快適なメカニズムを提供しています。

https://www.nuget.org/packages/WonderTools.JsonSectionReader/

P.S。私はこのプロジェクトのメンテナだ、と私は私が望んでいた程度で、この問題を解決し、他のツールを見つけられませんでしたので、このプロジェクトが作成されました。

私はNUnitののequivilentセットアップ法などの方法をマークし、その後の試験に使用されるフィールドにデータをロードすることであると思います。

あなたは、多かれ少なかれ、それを自分でコーディングする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top