如何单元测试字符串扩展方法

时间:2014-12-18 15:36:59

标签: c# unit-testing nunit

我有一些代码如下,我想单元测试哪个是字符串类的扩展方法:

public static string Replace(this string str, Dictionary<string, string> dict)
{            
}

我的扩展方法在主项目中,所以我的单元测试项目甚至看不到它。

我该怎么做?我正在使用Nunit。

2 个答案:

答案 0 :(得分:4)

您可以通过传递作为第一个参数扩展的类型的实例(例如StringExtensions.Replace(str, dict))来调用普通静态方法之类的扩展方法。

如果此扩展方法位于&#34;主项目&#34;中,则应在主项目的测试套件中进行测试,而不是在引用主项目的项目中进行测试。

答案 1 :(得分:0)

除了需要从您的测试程序集中引用您的主程序集(根据您的一条评论,在您的特定情况下似乎是问题),还有两个可能的陷阱,遇到这个问题的人也应该请注意:

  1. 包含扩展方法的类必须是非泛型的,非嵌套的静态类。 (见http://msdn.microsoft.com/en-us//library/bb383977.aspx
  2. 为了使测试组件能够访问该方法,要么类和方法必须是公开的,或者如果它们是内部的,那么你必须&#34;朋友&#34;你的测试组件是主要的。 (见http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx