首页 > 解决方案 > 我可以从 Microsoft.VisualStudio.TestTools.UnitTesting.TestContext 或其他方法中获得未处理的异常吗?

问题描述

我正在编写 API 测试并使用 mstest 框架。我的设置非常简单,我的清理和初始化函数如下所示——站起来并关闭日志记录。我的问题是某些测试会抛出未被捕获的异常(这通常是由于仍在开发中的测试代码)。这会导致测试失败,这是我所期望的,但我无法获取实际的异常对象并将其记录下来,这使得调试有点困难。显而易见的答案是“将您的测试包装在处理日志记录并优雅地使测试失败的 try catch 块中”,但我真的不喜欢这样,因为它只是增加了另一个责任,即未来的测试作者(可能是我)糟糕地实现了 catch 、记录和重新抛出逻辑。

TL;DR:我如何才能使用 TestContext (或其他解决方案)访问在测试清理方法中被抛出但未被实际测试逻辑捕获的异常?

public TestContext TestContext { get; set; }

[TestInitialize]
public void TestInitialize()
{
    Log.RegisterLogger(new TestLog() {
        TestCaseName = TestContext.TestName,
        TestCastStart = DateTime.UtcNow
    });
}

[TestCleanup]
public void TestCleanup()
{
    /*I want to be able to get the details of an uncaught exception here*/
    Log.FinalizeLogging();
}

标签: c#exceptionmstest

解决方案


推荐阅读