C# 在单元测试中链接resx文件

C# 在单元测试中链接resx文件,c#,asp.net,unit-testing,resx,C#,Asp.net,Unit Testing,Resx,我正在Visual Studio 2012中为ASP.NET MVC 4 web应用程序进行单元测试项目。 该解决方案有3个项目: 管理员 单元测试 WebUI WebUI在App_GlobalResources文件夹中有一些用于定位的resx文件,它使用: HttpContext.GetGlobalResourceObject("Resources", key).ToString() 去拿线 现在我需要对一个使用本地化的操作方法进行单元测试。 我想在对方法进行单元测试时获取字符串 这就是

我正在Visual Studio 2012中为ASP.NET MVC 4 web应用程序进行单元测试项目。 该解决方案有3个项目:

  • 管理员
  • 单元测试
  • WebUI
WebUI在App_GlobalResources文件夹中有一些用于定位的resx文件,它使用:

HttpContext.GetGlobalResourceObject("Resources", key).ToString()
去拿线

现在我需要对一个使用本地化的操作方法进行单元测试。 我想在对方法进行单元测试时获取字符串

这就是我所做的

我设法模拟了GetGlobalResourceObject方法,我可以发送任何需要的字符串

我将Resources.resx文件作为链接添加到UnitTests项目中

我编辑了链接的属性:

  • 构建操作:嵌入式资源
  • 复制到输出目录:不复制
  • 自定义工具:GlobalResourceProxyGenerator
实际上,我可以使用以下方法检索字符串:

Resources.stringName
但是,如果我在原始resx文件(WebUI项目中的文件)中添加一个新字符串,一切都会崩溃,我无法构建解决方案


链接不应该反映原始文件吗?

您所描述的不是真正的单元测试。单元测试不应依赖于外部资源

当您说“我设法模拟了
GetGlobalResourceObject
方法”时,我假定您正在使用HttpContextBase.GetGlobalResourceObject(可在控制器中访问)


因此,出于单元测试的目的,您不需要任何resx文件。只要在模拟方法上设置适当的调用,它就会返回所需的任何内容。

没错,测试resx文件会使单元测试成为集成测试。我可以将GetGlobalResourceObject包装在接口中并模拟该接口。否则,干脆放弃这部分测试。谢谢!!!