2013-05-22 31 views
1

的不同版本我們使用MSTest的運行對我們的解決方案的自動化測試。該解決方案中的一些項目針對.NET 3.5,並引用了Newtonsoft.JSON.dll 4.0.8版。其他項目是.NET 4.0的目標,並引用Newtonsoft.JSON.dll 4.5.7版的簽名版本。當MSTest的執行鍼對所有的測試,使用Newtonsoft的新版本的測試失敗:MSTest的不拉下來Newtonsoft.JSON.dll

System.IO.FileLoadException:System.IO.FileLoadException:無法加載文件或程序集「Newtonsoft.Json,版本= 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依賴項之一。定位的程序集清單定義與程序集引用不匹配。 (來自HRESULT的異常:0x80131040)。

但是,如果我跑得運行DLL的新版本的測試中,他們成功地執行。我查看了Test/OUT目錄,並確認對於失敗的運行,只有早期版本的Newtonsoft DLL在那裏,並且對於成功運行,只有更高版本的DLL在那裏。

那麼,怎樣才能我要麼1)強制MSTest的,以在適當的二進制文件,每次複製或2)強制MSTest的在不同版本的側相同的二進制方帶來了什麼?

TIA。

+0

的問題是,您的測試在測試/ Out目錄部署不同版本的同一個DLL這樣一個被另一隻重寫...嗯...你如何開始你的測試?他們只是在每晚構建結束時運行的UninTest? – Elena

+0

我通過一個家庭成長的測試實用程序來運行它,該實用程序掃描查找測試DLL的文件夾和子文件夾,然後將每個DLL添加到使用「/ testcontainer:」標誌傳遞給MSTest的命令行參數中。 –

+0

據我所知,每次「導致MSTest部署二進制文件」的唯一方法是進行幾次測試運行。這意味着您將需要MSTest調用引用Newtonsoft.JSON.dll版本4.0.8的DLL和第二次MSTest調用引用Newtonsoft.JSON.dll 4.5.7版的DLL。但是我認爲用你的方式開始測試並不容易...... – Elena

回答

0

所以,據我所知,沒有使用MSTest的命令行的解決方案。 MSTest將所有/ TestContainers複製到/ Out目錄以及所有依賴關係。在我的情況下,它首先找到了舊版本的Newtonsoft.JSON.dll的引用,並將其複製過來。然後,當它解決了其他Newtonsoft.JSON.dll的依賴關係時,它沒有複製它。

我的解決辦法是改變程序運行的每個裝配MSTEST一個實例,而不是運行它一次爲所有的組件。