Postsharp和NUnit:如何拦截基类中定义的TestFixtureSetup

时间:2019-05-07 11:52:33

标签: c# nunit postsharp

我在单元测试中使用了MethodInterceptionAspect(为什么这样做很长话)。

[MulticastAttributeUsage(MulticastTargets.Method,
        AllowMultiple = false,
        TargetMemberAttributes = MulticastAttributes.Instance | MulticastAttributes.Public)]
[AspectTypeDependency(AspectDependencyAction.Commute, typeof(TestWrapperAttribute))]
[Serializable]
public class TestWrapperAttribute : MethodInterceptionAspect
{
   public override bool CompileTimeValidate( MethodBase method )
   {
      return true;
   }
   public override void OnInvoke(MethodInterceptionArgs args)
   {
   ... // some code here
   }
 }

我有一个基础测试类和一个派生测试类

public class BaseTestClass
{
    [TestFixtureSetUp]
    public void BaseTestFixtureSetUp()
    {  // ... code here
    }
}

[TestFixture]
[TestWrapper]
public class DerivedTestClass : BaseTestClass
{
    [TestFixtureSetUp]
    public void TestFixtureSetUp()
    {
    }
    // ... some more stuff here, Tests etc.
}

现在的问题是,我的方面的OnInvoke在DerivedClass TestFixtureSetup上执行,而不在基类的TestFixtureSetup上执行。

请注意,我阅读了在此方向上可以找到的唯一一篇文章(我将在以后输入链接),但这是关于拦截ToString()的解决方案,解决方案是在方面中定义ToString()并将其作为覆盖插入在课堂里。这种情况有所不同,因为我不知道具有TestFixtureSetup属性的方法的名称。

0 个答案:

没有答案