使用 Microsoft 测试工具检查是否抛出异常(并纠正异常)
Check if exception thrown (and correct exception) with Microsoft testing tools
考虑一种方法,其中 returns 来自 ExcelPackage
的 ExcelWorksheet
(使用 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,""));
考虑一种方法,其中 returns 来自 ExcelPackage
的 ExcelWorksheet
(使用 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 安装包
- 从 Nuget 安装包
- 那么你可以使用
Assert.ThrowsException<ArgumentOutOfRangeException>..
MSTest.TestFramework
MSTest.TestAdapter
//Substitute `ArgumentOutOfRangeException` with the exception that you receive
Assert.ThrowsException<ArgumentOutOfRangeException>( ()=>FindExcelSheet(spreadsheet,""));