带有Nunit的Excel数据源的unit testing

我需要通过从C#中的excel数据源导入数据来testing与Nunit一些类,我找不到任何有用的资源来指导我,有没有解决scheme? 在Nunit考虑这个testing

[Test] [TestCase(new[] { -4, -3, -3, -2, -1, 0, 1, 2, 2, 3, 4 }, new []{1, 0, 1, 0,1, 0, 1, 1, 0, 1, 0})] public void YourTest(int[] given, int[] expected) { ///some code } 

我会从Excel中读取数据,如果我有一个Excel文件,我把给定的值在第一列和期望值在第二列:

 column1(in Excel) column2(in Excel) -4 1 -3 0 -3 1 -2 0 -1 1 0 0 1 1 2 1 2 0 3 1 4 0 

我想用exceltesting的原因是因为我需要在column1上应用一些公式,而我的公式结果在column2上显示,我不喜欢从excel复制到我的testing类。

在MsTest中我们有:

 [TestMethod] [Owner("Name")] [TestProperty("TestCategory", "Developer"), DataSource("Microsoft.ACE.OLEDB.12.0", "Data Source=C:/Sheets/DataSheet.xlsx;Extended Properties=Excel 12.0;", "[Sheet1$]", DataAccessMethod.Sequential)] 

我们在Nunit中有相同的事情,还是我们需要模拟? 我们如何简化它? 在[Setup]部分或[TestMethod]

如果你的问题是“我如何从Excel中读取数据”,你不关心格式(即你只想要数据),那么你最好的select可能是OleDb。 这是关于从Excel中编码数据检索的最快和最简单的方法。

看看这里快速教程。 它应该给你你需要的一切。

一旦你了解它是如何工作的,如果遇到任何麻烦,那么这个网站上有很多答案可以帮助你。

使用EPPlus ,您可以轻松读取excel文件,如下所示:

 var ep = new ExcelPackage(new FileInfo("c:\\path-to-excel\\data.xslx")); ExcelWorksheet ws = ep.Workbook.Worksheets["Sheet1"]; // first row is column name, array indexer goes from 1 for (int i = 2; i < ws.Dimension.End.Row; i++) { int given = (int)ws.Cells[i, 1].Value; int expected = (int)ws.Cells[i, 2].Value; YourTest(given, expected); }