Как написать собственное сообщение, когда исключение выдается как Gallio / MbUnit? - PullRequest
1 голос
/ 02 февраля 2012

Я использую 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 Ответ

1 голос
/ 24 февраля 2012

Вам не нужно использовать 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();
    }
}
...