私は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を使用してパラメーターを渡したい(コードにパラメーターを記述しない)。
それを達成することは可能ですか?
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
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ファイルに保存します。多分最善の解決策ではないかもしれませんが、私は目標を達成しました-コードでパラメーターを記述することではありません。