使用 Microsoft 测试工具检查是否抛出异常(并纠正异常)

Check if exception thrown (and correct exception) with Microsoft testing tools

考虑一种方法,其中 returns 来自 ExcelPackageExcelWorksheet(使用 Epplus 库):

public ExcelWorksheet findExcelSheet(ExcelPackage spreadsheet, string v)

如果在名为 "v".

的电子表格中找不到工作表,此方法将抛出 Exception

为此方法编写了单元测试:

[TestMethod]
public void findExcelSheet_Test()
{
    // arrange
    ExcelPackage testSpreadsheet = new ExcelPackage();
    ExcelWorksheet testWsFPS = testSpreadsheet.Workbook.Worksheets.Add("FPS");
    ExcelWorksheet testWsDRS = testSpreadsheet.Workbook.Worksheets.Add("DRS");
    ExcelWorksheet testWsDPC = testSpreadsheet.Workbook.Worksheets.Add("DPC");

    // act
    findExcelSheet(testSpreadsheet, Path.GetRandomFileName()); //or some other random string

    // assert
}

如何使用 Microsoft.VisualStudio.TestTools.UnitTesting 来测试它何时抛出异常,以及它们是正确的异常类型?

您需要使用 [MSTest V2] 才能 Assert.ThrowsException

从 VS2017 开始,内置单元测试项目模板仅使用 MSTest V2。

  • 从 Nuget
  • 安装包 MSTest.TestFramework
  • 从 Nuget
  • 安装包 MSTest.TestAdapter
  • 那么你可以使用Assert.ThrowsException<ArgumentOutOfRangeException>..
 //Substitute `ArgumentOutOfRangeException` with the exception that you receive
 Assert.ThrowsException<ArgumentOutOfRangeException>( ()=>FindExcelSheet(spreadsheet,""));