我在.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;
}
}
}
目的是测试签名完全相同但实现不同的此类方法是否递归。
答案 0 :(得分:1)
如果您可以在要调用的方法中添加属性,则可以使用拦截器模式。查看TinyInterceptor的示例:https://github.com/Jalalx/TinyInterceptor 有了它,您可以获取方法调用之前和之后,并使用全局计数来检测任何调用> 1。
如果无法添加属性,则可以使用Reflection.emit动态添加属性。参见https://docs.microsoft.com/en-us/dotnet/api/system.reflection.emit
希望这会有所帮助, 保罗