我有一个.NET 4 DLL,我在生成单元测试时遇到问题。我正在使用VS 2010 Standard。解决方案中的每个其他项目都会为类生成单元测试存根。对于其他程序集,我可以进入现有代码,右键单击类名,然后选择“创建单元测试”。我得到的选择窗口就好了。
我真正需要覆盖的一个程序集不会使用上面提到的相同方法生成测试存根。我去了项目/程序集中的一个类,右键单击,选择“Generate Unit Tests”,我遇到了以下错误:
单元测试生成错误:读取模块'xx.Core'时遇到以下错误:无法解析类型引用:[System.Web,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = xxxxxxxxxxxx] System.Web .Routing.RouteValueDictionary
据我所知,项目中没有直接引用错误消息中提到的System.Web的框架2.0版本。使用名为grepWIN的工具搜索包含项目和.CS文件的目录,以查看该引用的文本是否存在于任何文件中,结果为零。甚至可以同时引用system.web dll的2.0和4.0版本,如果是这样,你为什么要这样做呢?
有关如何摆脱此错误消息的任何想法,以便我可以正确地删除一些单元测试?
答案 0 :(得分:1)
我遇到了与ObservableCollection相同的问题。
我的“解决方案”是将所有引用的项目及其引用的项目升级到.NET 4.0。然后它起作用....但是这看起来有点奇怪,我可能已经做了其他导致问题消失的事情。
答案 1 :(得分:1)
我最近和我的一个项目有过类似的问题。问题是,在我构建了库之后,我重命名了dll文件。我的项目引用dll仍然很好,但是在生成单元测试时我收到了类似的错误,直到我在构建它时将dll重命名为其原始名称。
答案 2 :(得分:0)
您是否正在使用NUNIT进行单元测试?如果是这样,默认情况下Nunit指向.Net 2.0。您需要对nunit.exe.config文件进行适当的更改。
请您在Windows资源管理器中导航到C:\ WINDOWS \ Microsoft.NET \ Framework。在那里,您将看到许多具有此类名称的文件夹:v1.0.xxxxx,v1.1.xxxxx,...,v4.0.xxxxx。记下v4.0.xxxxx文件夹的确切名称。
使用文本编辑器打开文件nunit.exe.config,该文件位于以下文件夹中:C:\ Program Files \ NUnit 2.5.2 \ bin \ net-2.0。
添加:
<startup> <requiredRuntime version="v4.0.xxxxx" /> </startup>
[用您记下的正确数字替换xxxxx ]
并添加:
<loadFromRemoteSources enabled="true" />
上述变更对我有用。希望面对这个问题的其他人。