更新後的解決方案 我能夠讓Pex在VS 2010中運行,安裝了.Net Framework 4.5。也許其他人已經解釋說這是解決方案,但我的問題(對於Moles和Pex來說是新的)是很多解釋都是模糊的。由於這些文章的作者,因爲他們讓我在正確的方向前進:
http://feherzsolt.wordpress.com/2013/02/13/moles-and-net-4-5/
http://www.daedtech.com/using-moles-with-the-system-assembly
因此,解決辦法是在測試中創建一個新的文件.moles(System.moles)項目與Pex創建yourAssemblyUnderTest.moles文件的同一級別,並將以下內容添加到文件中。
<Moles xmlns="http://schemas.microsoft.com/moles/2010/">
<Assembly Name="System" ReflectionOnly="true" />
</Moles>
您可能必須清理(或手動刪除obj文件夾內容)並重建,但此解決方案適用於我。我還注意到,第一個構建會報告構建錯誤,但錯誤會在後續構建中消失。
替代解決方案 我知道這是不是的解決方案,但它是一個(差)的解決方法,讓Pex的運行...加上這是太長了評論。如果有人知道如何讓PEX在4.5.Net Framework的機器上運行,請回復。
這是我的場景。我有一臺帶有.Net Framework 4.5的機器,我安裝了Visual Studio 2010和2012。我安裝了Pex(en_visual_studio_2010_pex_0.94.51023.0_power_tools_x64_598803.exe),並可以在面向.Net Framework 4.0的VS 2010項目中運行Pex。我可以運行的Pex和它發現的問題......但一旦我提拔問題,單元測試,因爲下面的生成錯誤
The type or namespace name 'IReadOnlyList' does not exist in the namespace 'System.Collections.Generic' (are you missing an assembly reference?)
一番搜索之後的單元測試項目將不會編譯,讀取的Pex或痣用4.0版本取代4.5 .Net Framework程序集我決定卸載4.5,安裝4.0,並試一試。在4.0上運行工作得很好,我不需要定義Mole類型過濾器來使其工作。然後我試着再次升級到4.5框架......但不幸的是,我最終回到了開始使用IReadOnlyList命名空間問題的地方。
看來,如果你的.NET 4.5和痣,鼴鼠想反映.net 4.5程序集。解決方法是在[這裏](http://research.microsoft.com/en-us/projects/moles/molesdev11.aspx)中描述的,但它僅提供了mscore的示例。如果你想使用system.net,你必須添加更多標籤 –
Haroon
謝謝你,哈龍。什麼是您用於System.Net程序集以解決此問題的標記? –
你會添加刪除標籤刪除特定的命名空間程序集<刪除命名空間=「System.Net.whatever你不需要」/> – Haroon