今天我使用VS2008到VS2010的所有底层项目升级了我的解决方案。除了我的单元测试外,一切都很顺利。
首先,只有Web项目具有.NET 4的目标框架。所有其他项目仍然具有.NET 3.5。我将它们全部更改为.NET 4。
现在,当我调试单元测试时,它会在每个异常中中断。在2008年它只是不会通过并告诉我发生了异常。即使我定义了ExpectedException属性,它也会停止对每个异常进行调试。
我的一个测试的例子:
[TestMethod]
[ExpectedException(typeof(EntityDoesNotExistException))]
public void ConstructorTest()
{
AddressType type = new AddressType(int.MaxValue);
}
EntityDoesNotExistException是一个自定义异常并继承了Exception。
修改 我在2008年和2010年查看了例外设置(ctrl + alt + e)。在两个版本中,设置都是相同的。但是在2008年,当我有ExpectedException属性时,调试不会中断。在2010年,它确实会破裂。
答案 0 :(得分:12)
格里指出我正确的方向:
这将消除失败的Asserts的中断,但是当你设置了ExpectedException时,测试仍然会中断。
我是为此设置100奖金的人,所以一些赞成票会受到赞赏; - )
答案 1 :(得分:8)
根据微软的说法,这不是一个错误,它是“按设计”:
答案 2 :(得分:2)
按Ctrl + Alt + E并检查CLR例外的中断设置。如果将其设置为true,则会出现您描述的行为。
答案 3 :(得分:2)
Microsoft支持人员告诉我在运行单元测试时使用Ctrl-F5(无需调试启动),这似乎有效。
要尝试的另一件事是转到工具|选项|调试 并取消选中“启用我的代码”选项。
答案 4 :(得分:1)
确保您对Microsoft.VisualStudio.QualityTools.UnitTestingFramework的引用是版本10.0.0.0。
如果是9.0.0.0版,则Visual Studio 2010中会出现此问题。
希望这会有所帮助。如果人们仍然有这个问题。
答案 5 :(得分:1)
我是rlandster所说的。清除“启用我的代码”调试选项为我解决了这个问题。它修复了断言和破坏预期异常的问题。在http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/25bdf149-5133-4f47-bbf2-1d4ca638fee9处有更多细节。
答案 6 :(得分:0)
我遇到了同样的问题,但终于成功了。不太确定如何,但是这里列出了我之间没有工作的事情,当它再次开始工作时。
不确定哪个位固定了它。无论如何,希望这有帮助!
答案 7 :(得分:0)
我最终将测试更改为此表单以避免破坏。不理想:
[TestMethod]
public void Guid()
{
try
{
Guid g = new Guid("myguid'123'");
}
catch( FormatException fe)
{
return; // expected exception - pass
}
Assert.Fail(); // exception not thrown - fail
}