如何像Gallio / MbUnit一样抛出异常时如何编写自定义消息?

时间:2012-02-02 18:36:33

标签: exception c#-4.0 postsharp mbunit gallio

我正在使用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。

我该怎么做?编写异常消息的位置在哪里?

1 个答案:

答案 0 :(得分:1)

您无需使用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();
    }
}