gpt4 book ai didi

c# - 如何在没有 try/catch block 的情况下记录单元测试中抛出的异常?

转载 作者:行者123 更新时间:2023-11-30 17:00:20 25 4
gpt4 key购买 nike

我正在使用 Microsoft.VisualStudio.TestTools.UnitTesting 在 Visual Studio 中运行我的测试。我正在日志文件中记录我的所有代码。在 [TestInitialize] 和 [TestCleanup] 方法中,我还记录了测试的开始/结束。

我可以通过 TestContext.CurrentTestOutcome 属性记录测试结果。每当在我的代码中抛出异常时,我都会在抛出之前记录它,因此我的日志文件中有该异常的踪迹。

但是,我不知道如何记录我的代码引用的 DLL 抛出的异常。此类异常由单元测试框架处理,并记录在 Visual Studio 的测试资源管理器窗口中。

如何在我的文件中记录这些异常?

我可以用 try 包围我的每个测试用例,然后在 catch block 中登录。但是,由于我有很多测试用例,这是重复的/痛苦的。

任何想法/解决方案?

最佳答案

您可以编写一个扩展方法,它接受一个 Action 并使用适当的 try/catch 逻辑执行它:

    public static void WithExceptionLogging(Action testToExecute)
{
try
{
testToExecute();
}
catch (Exception e)
{
//logging logic goes here
}
}

然后在你的测试方法中,

        Action someTest = () =>
{
var expected = 1;
var actual = Calculator.Add("1+0");
Assert.AreEqual(expected, actual);
};

someTest.WithExceptionLogging();

关于c# - 如何在没有 try/catch block 的情况下记录单元测试中抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com