2012-07-04 140 views

回答

2

至少在Visual Studio 2013中,NSpec Test Adapter(由{o} Software提供)看起來有效。在擴展庫中找到它。然後在測試資源管理器中右鍵單擊測試,然後點擊調試。

enter image description here

+0

那麼Visual Studio 2010呢? – hellboy

+0

這是一個非常舊的版本,所以我不確定。 – Vimes

0

Resharper僅支持NUnit和MSTest跑步者(AFAIR)。打開Resharper的「單元測試瀏覽器」窗口,看看它是否列出你的NSpec測試..

如果沒有,你需要回退指定一個外部程序進行調試(NSpec亞軍EXE) - 見this question如何在Visual Studio中進行配置。

3

另一個好的選擇是要調試測試只需鍵入

 
    System.Diagnostics.Debugger.Launch() 

。您將得到一個Visual Studio提示來調試測試。我也推薦看看specwatchr

+1

謝謝,我用過這個,但感覺有點笨拙。如果可能的話,我寧願使用resharper測試跑步者。我居住在使用允許這個的mspec。如果支持reharper,我會考慮將來切換。我已經設法使它與墊片一起工作,但這又覺得笨拙。我也使用了specwatchr,但我發現它讓人分心,我更喜歡ncrunch的集成解決方案來進行持續測試。 – Mantisimo

+1

@Mantisimo NCrunch絕對不錯。 specwatchr給你的是「縮放」能力。例如,可能會出現一個點,您需要執行proc任務,例如在測試運行之前部署網站或重置數據庫,specwatchr已集成到rake中以允許您執行此類任務:-) – Amir

+0

不得不修改源代碼以使用調試器應該是最後的手段。我希望有計劃讓specwatchr更容易訪問。 – Vimes

1

我用一個簡單的技巧,它可以讓我用ReSharper的調試NSpec開箱。這個想法是有自己的「nspec」類,而不是DebuggerShim.cs(在您的測試項目中的某個地方)的版本:

[TestFixture] 
public abstract class nspec: global::NSpec.nspec 
{ 
    [Test] 
    public void debug() 
    { 
     var currentSpec = this.GetType(); 
     var finder = new SpecFinder(new[] {currentSpec}); 
     var builder = new ContextBuilder(finder, new Tags().Parse(currentSpec.Name), new DefaultConventions()); 
     var runner = new ContextRunner(builder, new ConsoleFormatter(), false); 
     var results = runner.Run(builder.Contexts().Build()); 

     //assert that there aren't any failures 
     results.Failures().Count().should_be(0); 
    } 
} 

後,你會得到ReSharper的測試圖標旁邊的規格: nspec testing

欲瞭解更多詳情,請參閱此文章:Debugging NSpec with VisualStudio/Resharper – simple trick

相關問題