Почему мой сеанс Resharper NUnit перестает работать, но работает в режиме отладки - PullRequest
2 голосов
/ 28 июля 2011

Я использую ReSharper для запуска модульных тестов, разработанных в C # / NUnit. Когда я тестирую модуль класса C ++ / CLI, все мои тесты проходят, но затем появляется следующее окно сообщения; "Приложение Runner перестало работать". Класс, который я тестирую, не имеет ничего неуправляемого:

    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 ]

10 голосов
/ 12 декабря 2011

Причина такого странного поведения заключалась в следующем: у меня был рекурсивный метод, вызывающий себя в бесконечном цикле.

1 голос
/ 08 декабря 2011

Это, вероятно, не ваш ответ, но может быть полезным. Вы можете получить это же диалоговое окно, если поместите в ваш код следующее:

System.Diagnostics.Debugger.Break();

Конечно, вы заметите это, когда будете запускать тесты в отладчике! Тем не менее, может быть что-то похожее, что делает ваш код. Оператор Break () приводит к вызову неуправляемого кода, и, если нет подключенного отладчика, я думаю, это может вызвать исключение Win32, которое Resharper отпускает необработанным.

...