Проверьте, выбрано ли исключение (и исправьте исключение) с помощью инструментов тестирования Microsoft

Рассмотрим метод, который возвращает ExcelWorksheet из ExcelPackage (с библиотекой Epplus):

public ExcelWorksheet findExcelSheet(ExcelPackage spreadsheet, string v)

Этот метод выдает Exception, если рабочий лист не найден в электронной таблице с именем «v».

Для этого метода написан модульный тест:

[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 можно проверить, генерирует ли он исключения, и что это правильный тип исключения?


person Al2110    schedule 25.02.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как использовать Assert для убедиться, что возникло исключение?   -  person Scircia    schedule 25.02.2020
comment
@Clint Я завтра проверю, работает ли, но вроде нормально.   -  person Al2110    schedule 25.02.2020


Ответы (1)


Вам необходимо использовать [MSTest V2], чтобы иметь возможность Assert.ThrowsException

Начиная с VS2017, во встроенных шаблонах проекта модульного теста используется только MSTest V2.

  • Установить пакет MSTest.TestFramework из Nuget
  • Установить пакет MSTest.TestAdapter из Nuget
  • Тогда вы можете использовать Assert.ThrowsException<ArgumentOutOfRangeException>..
 //Substitute `ArgumentOutOfRangeException` with the exception that you receive
 Assert.ThrowsException<ArgumentOutOfRangeException>( ()=>FindExcelSheet(spreadsheet,""));
person Clint    schedule 25.02.2020