2012-07-04 80 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

相关问题