Модульное тестирование в VS2010 - «Отладка» проходит, «Выполнить» не удается - PullRequest
6 голосов
/ 29 января 2012

У меня странная проблема с модульным тестированием в Visual Studio 2010. У меня есть тест, который проходит, когда я использую «Тест отладки» (без каких-либо точек останова), но не проходит, когда я использую «Выполнить тест». В этом тесте используются внешние библиотеки DLL, поэтому я не могу отладить его должным образом.

Знаешь ли ты причину, по которой такая ситуация возможна? Почему «Отладочный тест» отличается от «Выполнить тест», если все остальные параметры совпадают?

Ответы [ 3 ]

3 голосов
/ 13 июня 2012

Переключите ваше решение в режим Release вместо Debug, запустите полную сборку, вернитесь к отладке и повторите попытку, и дайте мне знать результат, я думаю, тесты пройдут ....

2 голосов
/ 29 января 2012

Причин может быть несколько, но в качестве одной из них вам придется дать нам код для работы.

Это может быть исключение кода:

#ifdef _DEBUG
//do something
#endif

Это будет выполняться только в режиме отладки.

Это могут быть оптимизации.Хотя они обычно не должны влиять на поведение, вы не должны полагаться на вызываемые деструкторы или конструкторы копирования.

Если вы делаете какой-либо взлом внутри кода, это также может быть допустимо только для отладки.

1 голос
/ 30 января 2012

Я подозреваю, что вы получаете доступ к памяти за пределами.Одно из основных различий между отладкой и выпуском заключается в том, что отладка добавляет наборы при заполнении и специальные маркеры для выделения памяти, чтобы отлавливать определенные виды ошибок.Это означает, что макеты памяти часто сильно отличаются между сборками отладки и выпуска.Я подозреваю, что вы обращаетесь к памяти из-за пределов, так что отладчик не ловит, где вы находите случайно допустимое значение в отладочной версии, но недопустимое в выпускной версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...