2012-06-07 21 views
4

我想在Visual Studio的測試系統中使用Gallio運行MSpec測試,但它似乎忽略了IDE中的MSpec插件。我所做的:如何在使用Gallio的Visual Studio測試系統中運行MSpec?

  1. 安裝加利奧
  2. 添加了MSpec NuGet包到我的測試項目
  3. 添加了公堂NuGet包到我的測試項目
  4. 複製的MSpec加利奧集成所需的三個文件在公堂的安裝目錄下的「MSpec」文件夾
  5. 在IDE中寫的MSpec測試
  6. 然「在解決所有測試」

得到以下錯誤

「沒有試驗或運行,因爲沒有測試加載選定的測試將被禁用」

要檢查公堂本身,我添加到MbUnit的參考和創建一個簡單的MbUnit測試。我也跑了Gallio的其他工具來檢查插件是否被拿起。我甚至重新啓動了VS以獲得更好的效果。

結果

使用Gallio.EchoGallio.Icarus成功執行既MbUnit的和MSpec測試運行測試,所以插件被拾起。從Visual Studio運行測試運行MbUnit測試,但不運行MSpec測試,所以Gallio集成似乎正在工作(而不是MSpec插件)。有什麼想法嗎?

之前有人提到它:是的,我寧願使用ReSharper但許可證不適合我目前的情況。

回答

5

更新:現在是一個將MSpec集成到VS2012測試系統的項目。它在Visual Studio Gallerysource is on GitHub上可用。

在開始調試兩個項目源的問題後,似乎有兩個潛在問題導致MSpec和Gallio的VS跑步者之間不兼容。然而,這兩個問題都源於VS runner使用Cecil從程序集中加載類型信息(大概是爲了避免將測試程序集加載到主AppDomain中)。

我會更新這個答案,因爲我發現更多(希望導致一個或多個修補程序來解決問題)。

問題1:嵌套類型被忽略

我一直在使用嵌套類型爲我測試(SubjectSpec+when_something),其通過由迦流的VS轉輪使用基於絲絲反射忽略,以避免在加載測試組件進入應用程序域。

這最終是一個相對簡單的修復,我已經作爲補丁提交給Gallio開發人員。如果/當我得到確認哪個發行版將成爲其中的一部分時,我會更新此答案。

問題2:MSpec導致如果容器類型刪除,以避免問題1

「在調用的測試驅動程序時出現異常」,MSpec引發此錯誤。原因是MSpec試圖創建測試對象的一個​​實例,但是Gallio只提供了一個包裝器Type實際上無法創建的對象。

相關問題