【问题标题】:Is it possible to restrict methods to virtual ONLY in friendly assemblies?是否可以将方法限制为仅在友好程序集中虚拟?
【发布时间】:2016-03-08 17:40:53
【问题描述】:

对于单元测试,我希望能够将方法转换为仅用于特定程序集的虚拟方法,类似于InternalsVisibleTo

例如,如果我有组装动物

public void methodDog()
{
}

我想这样伪装:

public virtual void methodDog()
{
}

..在程序集中 AnimalsTests

我们如何将某些方法标记为只有在不使用 AOP 的情况下被特定程序集访问时才为虚拟方法?

【问题讨论】:

  • 虚拟课程?嗯??
  • @MatíasFidemraizer 哎呀,我的意思是方法
  • internal virtual 不适合你吗?
  • 据我所知这是不可能的。也许考虑创建一个接口并在测试时实现它。或者,考虑创建一个internal virtual 方法,例如internal virtual void methodDogInternal(),由public void methodDog() 调用,并在测试时覆盖internal virtual void methodDogInternal。如果没有关于您的实际情况的更多详细信息,很难给出建议。
  • @AlexeiLevenkov ya neznaiu,你告诉我

标签: c# .net visual-studio unit-testing nunit


【解决方案1】:

据我所知这是不可能的,但您可以考虑:

  1. 创建一个接口并在测试时实现它,或者;

  2. 创建内部虚拟方法,由您的公共方法调用并覆盖内部虚拟方法,例如:


public void methodDog()
{
    methodDogInternal();
}

internal virtual void methodDogInternal()
{
}

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2013-05-30
    • 2012-03-18
    相关资源
    最近更新 更多