Обработка исключений контекста теста MSTest

Есть ли способ, которым я могу добраться до исключения, которое было обработано инфраструктурой MSTest с использованием TestContext или какого-либо другого метода в базовом классе тестирования?

Если в одном из моих тестов возникает необработанное исключение, яЯ хотел бы прокрутить все элементы в словаре исключений. Словарь и отобразить их в результатах теста, чтобы помочь мне выяснить, почему тест не удался (мы обычно добавляем данные в исключение, чтобы помочь нам отладить в рабочей среде, поэтому я 'Я хотел бы сделать то же самое для тестирования).

Примечание. Я не проверяю, чтобы исключение было ПРЕДПОЛАГАЕТСЯ (СЛЕДУЮЩЕЕ для этого есть другие тесты), я проверяю действительный случай, мне просто нужно просмотреть данные об исключении.

Вот пример кода того, что яЯ говорю о.

[TestMethod]
public void IsFinanceDeadlineDateValid()
{
    var target = new BusinessObject();
    SetupBusinessObject(target);

    //How can I capture this in the text context so I can display all the data 
    //in the exception in the test result...

    var expected = 100;
    try
    {
        Assert.AreEqual(expected, target.PerformSomeCalculationThatMayDivideByZero());
    }
    catch (Exception ex)
    {
        ex.Data.Add("SomethingImportant", "I want to see this in the test result, as its important");
        ex.Data.Add("Expected", expected);
        throw ex;
    }

}

Я понимаю, что есть проблемы, почему я не должену нас нет такого метода инкапсуляции, но у нас также есть суб-тесты для проверки всей функциональности PerformSomeCalculation ...

Тем не менее, если тест не пройден, 99% времени я перезапускаю его, поэтому могуНичего не отлаживать без этой информации. Я также хотел бы сделать это на уровне GLOBAL, чтобы в случае неудачи какого-либо теста я получал информацию в результатах теста, а не делал это для каждого отдельного теста.

Вот код, который поместит информацию об исключении в результаты теста.

    public void AddDataFromExceptionToResults(Exception ex)
    {
        StringBuilder whereAmI = new StringBuilder();
        var holdException = ex;
        while (holdException != null)
        {
            Console.WriteLine(whereAmI.ToString() + "--" + holdException.Message);
            foreach (var item in holdException.Data.Keys)
            {
                Console.WriteLine(whereAmI.ToString() + "--Data--" + item + ":" + holdException.Data[item]);
            }

            holdException = holdException.InnerException;
        }
    }

Ответы на вопрос(3)

Ваш ответ на вопрос