2010-07-29 102 views
12

我有一個.NET 4 DLL,我在生成單元測試時遇到了問題。我正在使用VS 2010 Standard。解決方案中的每個其他項目都會爲類生成單元測試存根。對於其他程序集,我可以進入現有代碼,右鍵單擊類名稱,然後選擇「創建單元測試」。我得到了很好的選擇窗口。VS 2010錯誤生成單元測試

我真正需要覆蓋的一個程序集不會使用上面提到的相同方法生成測試存根。我去的項目/裝配,右鍵單擊一個類,選擇「生成單元測試」,和我會見了以下錯誤:

Unit Test Generation Error: The follow error was encountered while reading module 'xx.Core': Could not resolve type reference: [System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx]System.Web.Routing.RouteValueDictionary

據我所知,沒有直接引用在項目中向錯誤信息中提到的F​​ramework.Web.Web 2.0的版本。使用名爲grepWIN的工具搜索包含項目和.CS文件的目錄,查看該參考文本是否存在於任何文件中,結果爲零。是否有可能同時引用system.web dll的2.0和4.0版本,如果是這樣,你爲什麼要這麼做?

關於如何擺脫這個錯誤信息的任何想法,以便我可以正確地停留一些單元測試?

+1

我有相同的經驗,但可悲的是沒有答案:-( – 2011-02-23 12:37:16

回答

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" /> 

上述變化爲我工作。希望對於面臨這個問題的其他人。

+2

OP是使用測試生成功能VS2010應該創建存根單元測試,以及文件,類和所有其他管道。類,以便可以使用NUnit框架實現單元測試。 – GregC 2011-04-20 06:27:47

1

我和ObservableCollection有同樣的問題。

我的「解決方案」是將所有引用的項目及其引用的項目升級到.NET 4.0。然後它的工作....但是這似乎有點奇怪,我可以做一些其他的事情導致問題消失。

1

我最近和我的一個項目有類似的問題。問題是,我建立我的圖書館後,我改名爲dll文件。我的項目引用的dll仍然沒有問題,但是在生成單元測試時我收到了類似的錯誤,直到我將dll重命名爲原始名稱。