Сегодня я обновил свое решение со всеми базовыми проектами от VS2008 до VS2010. Все подходило за исключением моих модульных тестов.
В первую очередь, только веб-проекты имели как целевая платформа.NET 4. Все другие проекты все еще имели.NET 3.5. Я изменил их всех на.NET 4.
Теперь, когда я отлаживаю свои модульные тесты, это повреждается на каждом исключении. В 2008 это просто не передало бы и сказало бы мне, что исключение произошло. Даже когда мне определили атрибут ExpectedException, он прекращает отлаживать на каждом исключении.
И пример одного из моих тестов:
[TestMethod]
[ExpectedException(typeof(EntityDoesNotExistException))]
public void ConstructorTest()
{
AddressType type = new AddressType(int.MaxValue);
}
EntityDoesNotExistException является пользовательским исключением и наследовал Исключение.
Редактирование я посмотрел на настройки Exceptions (ctrl+alt+e) в 2008 и 2010. В обеих версиях настройки являются тем же. Однако в 2008 отладка не повреждается, когда я сделал, чтобы ExpectedException приписал. В 2010 это действительно повреждается.
Нажмите Ctrl + Alt + E и проверьте настройку прерывания при исключении для исключений CLR. Если для него установлено значение true, то будет происходить описанное вами поведение.
У меня была та же проблема, но, наконец, мне удалось заставить ее работать. Не совсем уверен, как, но вот список вещей, которые я делал между тем, когда он не работал, и когда он снова начал работать.
Не уверен, какой бит исправил это. В любом случае, надеюсь, это поможет!
Убедитесь, что ваша ссылка на Microsoft.VisualStudio.QualityTools.UnitTestingFramework имеет версию 10.0.0.0.
Если это версия 9.0.0.0, эта проблема возникнет в Visual Studio 2010.
Надеюсь, это поможет. Если у людей все еще есть эта проблема.
Джерри указал мне правильное направление:
Это избавит от прерывания при неудачных утверждениях, но тест все равно прервется, если вы установите ExpectedException.
Я был тем, кто установил для этого бонус 100, так что некоторые положительные отзывы будут оценены; -)