Postsharp и NUnit: как перехватить TestFixtureSetup, определенный в базовом классе - PullRequest
0 голосов
/ 07 мая 2019

У меня есть 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.

...