我需要单元化一个接收某个任意用户代码方法的 MethodInfo 对象的方法(通过反射动态加载)。
public string SomeMethod(MethodInfo methodInfo);
我想使用不同的 MethodInfo 对象来练习此方法。
最简单的方法是使用<type>.GetMethod("name")
检索 MethodInfo 对象,然后使用它调用测试方法并对结果进行断言。
我想要涵盖尽可能多的“不同”方法信息(或者更具体地说,尽可能多地传递不同的方法)。
我正在考虑两种方法,不确定这是否应该如何完成:
使用我需要的所有方法创建一个新的测试类。使用此类型的GetMethods()并迭代它们以将它们提供给我测试的方法。
为每个方法创建单独的单元测试。
第一个选项更容易扩展(向测试类添加新方法),但包含多个断言(针对每个MethodInfo实例的断言)。
我们如何轻松解决此问题并为此特定方案创建强大的测试?
答案 0 :(得分:1)
使用我需要的所有方法创建一个新的测试类。使用此类型 GetMethods()并迭代它们以将它们提供给我测试的方法。
如果SomeMethod
(处理此MethodInfo)中的逻辑具有处理所有类型的MethodInfo的通用逻辑,则按上述路径行进。
为每个方法创建一个单独的单元测试。
如果SomeMethod
中的逻辑具有针对各种类型的MethodInfo的特定案例逻辑,则按上述路线行进。