我正在使用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有问题?
答案 0 :(得分:10)
这种奇特行为的原因如下:我有一个递归方法,在无限循环中调用自己。
答案 1 :(得分:1)
这可能不是你的答案,但它可能会有所帮助。如果在代码中放置以下内容,则可以获得相同的对话框:
System.Diagnostics.Debugger.Break();
当然,在调试器中运行测试时会注意到这一点!不过,您的代码可能会有类似的东西。 Break()语句会导致调用非托管代码,如果没有连接调试器,我猜它可能会导致Win32异常,Resharper会让它无法处理。