为什么我的Resharper NUnit会话停止工作,但在调试模式下工作

时间:2011-07-28 16:14:50

标签: c# visual-studio-2010 unit-testing c++-cli resharper

我正在使用ReSharper来运行在C#/ NUnit中开发的单元测试。当我对C ++ / CLI类进行单元测试时,我的所有测试都会通过,但随后弹出以下消息框; “任务运行者应用程序已停止工作”。我正在测试的类没有任何不受管理的东西:

    public ref class MyClass
    {    
  public:
        MyClass(        
        array<double>^ rawPrices,
        array<DateTime>^ priceDates)
    {
// some unmanaged C++ code runs here
} 
(snip)
    ~MyClass()
    {
    }

  private:
        int numDays;
        array<double>^ Prices;
        array<double>^ Discounts;
    };

当所有测试成功时,弹出消息。 但是,当我切换到调试单元测试时,测试才成功。 我正在测试的库是在Release x64模式下编译的。

这种奇特的行为是否表明MyClass有问题?

2 个答案:

答案 0 :(得分:10)

这种奇特行为的原因如下:我有一个递归方法,在无限循环中调用自己。

答案 1 :(得分:1)

这可能不是你的答案,但它可能会有所帮助。如果在代码中放置以下内容,则可以获得相同的对话框:

System.Diagnostics.Debugger.Break();

当然,在调试器中运行测试时会注意到这一点!不过,您的代码可能会有类似的东西。 Break()语句会导致调用非托管代码,如果没有连接调试器,我猜它可能会导致Win32异常,Resharper会让它无法处理。