在.Net核心的测试中,如何检查方法是否递归?

时间:2019-01-26 00:08:11

标签: c# .net .net-core

我在.Net核心中有一个简单的测试套件,我想测试是否静态 非虚拟方法是递归的。我该怎么办?

这是我的课程:

using System;

namespace Fibonacci
{
    public class Fibonacci
    {
        public static int GetNumber(int n)
        {
            if (n < 0) throw new ArgumentException("Number mustn't be negative");

            var previousValue = 1;
            var currentValue = 0;

            var result = currentValue;

            for (var i = 0; i < n; i++)
            {
                result += previousValue;
                previousValue = currentValue;
                currentValue = result;
            }

            return result;
        }
    }
}

目的是测试签名完全相同但实现不同的此类方法是否递归。

1 个答案:

答案 0 :(得分:1)

如果您可以在要调用的方法中添加属性,则可以使用拦截器模式。查看TinyInterceptor的示例:https://github.com/Jalalx/TinyInterceptor 有了它,您可以获取方法调用之前和之后,并使用全局计数来检测任何调用> 1。

如果无法添加属性,则可以使用Reflection.emit动态添加属性。参见https://docs.microsoft.com/en-us/dotnet/api/system.reflection.emit

希望这会有所帮助, 保罗