如何在运行单元测试时禁用PostSharp

本文关键字:PostSharp 单元测试 运行 | 更新日期: 2023-09-27 17:57:39

我希望我的nunit测试不应用任何PostSharp方面,这样我就可以孤立地测试我的方法。这可以在测试夹具设置中以某种方式完成吗?还是只能在每个项目级别上完成?

如何在运行单元测试时禁用PostSharp

您可以在测试构建中设置"SkipPostSharp"标志,这样它就不会首先编译到二进制文件中。

您可以在方面上有一个静态标志来打开/关闭它,并检查该标志在方面实现中的状态。

然后在你的单元测试设置中,只需关闭静态标志

例如

    public static bool On = true;

    public override void OnInvoke(MethodInterceptionArgs args)
    {
        if (!CacheAttribute.On)
        {
            args.ReturnValue = args.Invoke(args.Arguments);
        }

如果您在单元测试中使用Typemock,您可以使用类似的东西

MyAspect myAspectMock = Isolate.Fake.Instance<MyAspect>(Members.MustSpecifyReturnValues);
Isolate.Swap.AllInstances<MyAspect>().With(myAspectMock);

这允许您控制在哪些测试中使用方面,哪些不使用方面,从而允许您测试方法本身以及应用的建议。

据推测,其他模拟框架

也会有类似的机制