web-dev-qa-db-ja.com

nunitコンソールを使用してテストケースパラメーターを渡す

私はNunitおよびデータ駆動テストアプローチを使用してテストを開発しています。 2つのパラメーターを持つテストメソッドがあります。xlsxファイルへのパスとワークシート名です。 TestCase属性でパラメーターを渡すと、Visual Studioで完全に機能します。たとえば、3つのテストケースを実行する場合は、次のように記述する必要があります。

[TestCase(@"pathToFile.xlsx", "TestCase1")]
[TestCase(@"pathToFile.xlsx", "TestCase2")]
[TestCase(@"pathToFile.xlsx", "TestCase3")]
public void performActionsByWorksheet(string excelFilePath, string worksheetName)
{    
    //test code
}

テストケースを実行し、Nunit Consoleを使用してパラメーターを渡したい(コードにパラメーターを記述しない)。

それを達成することは可能ですか?

15
kotoj

NUnit 3を使用している場合は、TestContext.Parametersプロパティを使用できます。

[Test]
public void performActionsByWorksheet()
{
    string excelFilePath = TestContext.Parameters["excelFilePath"];
    string worksheetName = TestContext.Parameters["worksheetName"];
    TestContext.WriteLine(excelFilePath);
    TestContext.WriteLine(worksheetName);
}

および--paramsコマンドライン引数:

nunit3-console.exe path/to/your/test.dll --params=excelFilePath=testPath;worksheetName=testName
30
Vadim Pashkov

TestCaseSourceを使用して、多くのテストケースの回避策を見つけました。
テストコード:

[Test, TestCaseSource("testData")]
public void performActionsByWorksheet(string excelFilePath, string worksheetName)
{
    Console.WriteLine("Excel filePath: {0}", excelFilePath);
    Console.WriteLine("worksheet Name: {0}", worksheetName);
}

Csvファイルからテストデータを取得:

static object[] testData()
{
    var reader = new StreamReader(File.OpenRead(@"TestCases.csv"));
    List<object[]> rows = new List<object[]>();

    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(',');
        rows.Add(values);
    }

    return rows.ToArray<object[]>();                        
}

実行するすべてのテストケース(ファイルパスとワークシート名)をcsvファイルに保存します。多分最善の解決策ではないかもしれませんが、私は目標を達成しました-コードでパラメーターを記述することではありません。

3
kotoj