VS 2010生成单元测试时出错

12

我有一个.NET 4 DLL,我在生成单元测试时遇到了问题。我使用的是VS 2010标准版。解决方案中的其他项目都可以为类生成单元测试存根。对于其他程序集,我可以进入现有代码,右键单击类名,然后选择“创建单元测试”。我可以很好地获得随后出现的选择窗口。

但我真正需要覆盖的那个程序集使用相同的方法不会生成测试桩。我进入项目/程序集中的一个类,右键单击,选择“生成单元测试”,然后出现以下错误:

单元测试生成错误:读取模块“xx.Core”时遇到以下错误:无法解析类型引用:“[System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=xxxxxxxxxxxx]System.Web.Routing.RouteValueDictionary”

据我所知,该项目中没有直接引用框架2.0版本中提到的System.Web。在包含项目和.CS文件的文件夹中使用grepWIN工具搜索是否存在该引用的文本,在任何文件中都没有结果。是否可能同时引用系统.web dll的2.0和4.0版本?如果可以,为什么要这样做?

有什么想法可以消除此错误消息,以便我可以正确制作一些单元测试存根吗?


1
我有同样的经历,但遗憾的是没有答案 :-( - Karel Kral
3个回答

1
最近我在一个项目中遇到了类似的问题。问题是,在我构建库之后,我重命名了dll文件。我的引用该dll的项目仍然可以正常构建,但是在生成单元测试时,我收到了类似的错误,直到我将dll文件重新命名为它构建时的原始名称。

1

我也遇到了同样的问题,与ObservableCollection有关。

我的“解决方案”是将所有引用的项目及其引用的项目升级到.NET 4.0。然后它就可以工作了...不过这似乎有点奇怪,我可能做了其他导致问题消失的事情。


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。

在add下添加:

<startup>  <requiredRuntime version="v4.0.xxxxx" />  </startup>

[用正确的数字替换xxxxx]

在下面添加:

<loadFromRemoteSources enabled="true" />

上述更改对我有效。希望对其他遇到此问题的人也有帮助。


2
OP正在使用测试生成功能。VS2010应该为单元测试创建存根,以及文件、类和所有其他管道。您正在谈论添加一个类,以便可以使用NUnit框架实现单元测试。 - GregC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接