ここで紹介されている Excel データ リーダーhttp://fabiuechi.blogspot.fi/2010/07/excel-data-driven-tests-with-nunit.htmlを使用して、NUnit テストのデータを読み取ろうとしています。
私のテストデータには、ステータス、実行中、圧力、p_prev、温度などのいくつかの列があり、Excel ファイルには 200 行以上あります。
テストケースを読むために次のコードを使用しています。
public static IEnumerable<TestCaseData> TestCaseData_T3003
{
get
{
var testcases = ExcelTestCaseDataReader.New()
.FromFileSystem(@"C:\Tests\Test data.xlsx")
.AddSheet("T3003")
.GetTestCases(delegate(string sheet, DataRow row, int rowNum)
{
var testName = sheet + rowNum;
//var category = Convert.ToString(row["col1"]);
IDictionary testDataArgs = new Hashtable();
var testData = new TestCaseData(testDataArgs).SetName(testName);
return testData;
}
);
foreach (TestCaseData testCaseData in testcases)
{
yield return testCaseData;
}
}
}
public List<TestCaseData> GetTestCases(Func<string, DataRow, int, TestCaseData> testCaseDataCreator)
{
var testDataList = new List<TestCaseData>();
IExcelDataReader excelReader = GetExcelReader(ExcelFile);
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
foreach (var sheet in Sheets)
{
var sheetTable = result.Tables[sheet];
var i = 0;
foreach (DataRow dr in sheetTable.Rows)
{
testDataList.Add(testCaseDataCreator(sheet, dr, i));
i = i + 1;
}
}
excelReader.Close();
return testDataList;
}
そして、Excel からのデータを使用する実際のテストは、まだ非常に未加工です。
[Test]
[TestCaseSource("TestCaseData_T3003")]
public void T3003_Excel(IDictionary testData)
{
//do the assertions here
}
問題は、テスト手順でテスト データにアクセスするにはどうすればよいかということです。「ステータス」または「圧力」列の値を参照するにはどうすればよいですか?
Nunit は、テストを 214 回実行するため、テスト データ内のすべての行を検出します。しかし、T3003_Excel でコードとパンをデバッグすると、プロパティ testData.Count がゼロになります。ハッシュテーブル testData.Keys のキー コレクションの長さも同様です。(testData.Keys.Count = 0)
何か提案や助けはありますか?