1

我需要通过从 C# 中的 excel 数据源导入数据来使用 Nunit 测试一些类,我找不到任何有用的资源来指导我,有什么解决方案吗?在 Nunit 中考虑这个测试

[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

我想用 excel 测试的原因是因为我需要在 column1 上应用一些公式,而我的公式结果出现在 column2 上,而且我不喜欢从 excel 复制到我的测试类。

在 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]

4

2 回答 2

0

使用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);
}
于 2012-11-19T21:29:34.057 回答
0

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

在这里查看快速教程。它应该为您提供所需的一切。

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

于 2012-11-19T21:24:33.187 回答