我使用Microsoft.VisualStudio.TestTools.UnitTesting在VisualStudio中运行我的测试。我正在做日志记录在我所有的代码在一个日志文件。在[TestInitialize]和[TestCleanup]方法中,我还记录了测试的开始/结束。
我可以通过TestContext记录测试结果。CurrentTestOutcome财产。每当在我的代码中抛出异常时,我在抛出它之前记录它,因此我的日志文件有该异常的跟踪。
但是,我不知道如何记录由我的代码引用的dll抛出的异常。这些异常由单元测试框架处理,并记录在Visual Studio中的测试资源管理器窗口中。
我如何在我的文件中记录这些异常?
我可以用try包围我的每个测试用例,并在catch块中登录。然而,由于我有许多测试用例,这是重复的/痛苦的。
知道/解决方案吗?
您可以编写一个扩展方法,该方法接受一个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();
也许你正在寻找ExpectedExceptionAttribute?