我将PostSharp与Gallio/MbUnit一起使用。
我希望能够从测试用例中捕获异常,并为我捕获的异常编写一条自定义消息,无论异常写在哪里。例外情况会被PostSharp方面捕获。例如,我想要一些函数WriteToExceptionLog,这样
[Serializable]
public class MyAspect: OnExceptionAspect
{
public override void OnException(MethodExecutionArgs args)
{
WriteToExceptionLog("My custom message");
}
}
将捕获
[TestFixture]
public class MyClass
{
[Test]
public void MyTest()
{
throw new NotImplementedException();
}
}
并且日志将显示"我的自定义消息",而不是NotImplementedException。
我该怎么做?异常消息写在哪里?
您不需要使用p#来实现这一点:
public class ExceptionInterceptorAttribute : TestAttribute
{
protected override void Execute(PatternTestInstanceState state)
{
try
{
base.Execute(state);
}
catch (Exception e)
{
TestLog.Failures.WriteLine("Intercepted an exception of type: {0}", e.GetType());
}
}
}
public class ExceptionInterceptorTests
{
[ExceptionInterceptor]
public void With_interceptor()
{
throw new NotImplementedException();
}
[Test]
public void Without_interceptor()
{
throw new NotImplementedException();
}
}