C#,Web应用程序。测试Excel文件生成

时间:2016-12-13 14:19:45

标签: c# excel unit-testing

在许多C#.NET WebApplications中,用户需要将数据下载为Excel文件。

要创建/管理我使用的Excel电子表格:EPPlus

要打开Excel文件,我使用并推荐:Microsoft.Office.Interop.Excel

在MVC网络应用程序中,我可以下载Excel文件:

public ActionResult DownloadExcell()
{
    byte[] report = _codeManager.CreateExcel();
    return BinaryResponseReport(report);
}

private ActionResult BinaryResponseReport(byte[] report)
{
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;filename=FooBar.xlsx");
    Response.BinaryWrite(report);
    Response.End();

    return RedirectToAction("Index");
}

但是在测试_codeManager.CreateExcel()功能时,我不想一遍又一遍地遍历Web应用程序的所有各个步骤,以获得下载Excell功能。

所以在解决方案的UnitTest项目中。我添加了一个TestMethod:

[TestMethod]
public void TestExcellGeneration()
{       
    byte[] report = _codeManager.CreateExcel();
    OpenExcelFromTempFile(excelFileBytes);
}

private void OpenExcelFromTempFile(byte[] data)
{
    string tempPath = System.IO.Path.GetTempFileName();
    System.IO.File.WriteAllBytes(tempPath, data);
    Application excelApplication = new Application();
    _Workbook excelWorkbook;
    excelWorkbook = excelApplication.Workbooks.Open(tempPath);
    excelApplication.Visible = true; 
}

运行此单元测试会将excell写入TempFile。

我的问题: 我应该在我的解决方案中添加这样的“单元测试”吗? 是否有替代或更好的方法来测试此功能?

因为我实际上并没有测试功能 Arrange Act Assert方式。

0 个答案:

没有答案