我需要单元测试一个方法,该方法接收MethodInfo某些任意用户代码方法(通过反射动态加载)的对象。单元测试接受MethodInfo对象的方法
public string SomeMethod(MethodInfo methodInfo);
我想锻炼使用不同的MethodInfo对象此方法。
最简单的方法是使用<type>.GetMethod("name")
检索MethodInfo对象,然后使用它调用测试方法并针对结果进行断言。
我想涵盖尽可能多的“不同”的方法信息(或更具体地说,尽可能多的不同方法传入)。
我正考虑2层的方法,不知道这是应该怎么做:
与我需要它的所有方法创建一个新的测试类。使用这种类型的GetMethods()并迭代它们以将它们馈送到我测试的方法中。
为每个方法创建一个单独的单元测试。
第一种选择是容易扩展(添加到测试类的新方法),但包含多个断言(断言针对它具有每个MethodInfo的实例)。
我们如何轻松解决此问题并为此特定场景创建稳健的测试?
我想你想过度测试,你只需要测试所有的情况来覆盖你的整个代码(包括你的方法中调用的函数生成的异常)。除此之外,对所有不同方法类型的Dummy Class的方法进行迭代,你想测试似乎是一个好方法。 – 2012-08-02 22:27:35
你准确地测试了什么? MethodInfo是从反射中获得的。测试的期望是什么?它坚持什么? – Ankush 2012-08-02 22:28:19
我们的应用程序动态获取用户的方法,将其参数序列化为xml并显示它。我想确保无论在我们的应用程序中抛出哪种方法,它都会成功处理并在xml中显示其参数 – 2012-08-02 22:33:31