English 中文(简体)
c#测试——为什么ExpectedException标记方法时传递异常不扔?
原标题:
  • 时间:2009-05-10 20:36:18
  •  标签:

在过去我有了预期的异常检测是这样的:

[TestMethod]
public void TestThrowsException() {
  try {
    Foo();
    Assert.Fail();
  } catch (MyException ex){//good
  }
}

然而我注意到有一个(清洁?)测试方法使用ExpectedException属性。为什么这个测试方法通过当异常抛出不是吗?当然这个失败的目的属性。

[TestMethod]
[ExpectedException(typeof(MyException))]
public void TestThrowsException() {
}

[编辑]我运行这个测试使用Silverlight 2

问题回答

通过,我从来没有见过真的是< em > < / em >你有吗?你确定你< em > < / em >标记是<代码> TestMethod > < /代码?测试运行器显示它传递吗?你肯定有最新的代码吗?

我仔细检查,但我肯定会失败…

Jon水瓢实际上是正确的,我确实有一个旧版本的测试框架。我这里12月08版本更新< a href = " http://code.msdn.microsoft.com/silverlightut/Release/ProjectReleases.aspx?ReleaseId = 1913 nofollow noreferrer“rel = > http://code.msdn.microsoft.com/silverlightut/Release/ProjectReleases.aspx?ReleaseId = 1913 < / >标记ExpectedException时,预期的行为。

实际上我已经经历,ReSharper 4.5 testrunner不使用ExpectedException NUnit 2.5……但是这看起来像MSTest…你能详细说明您使用测试框架和执行哪些测试运行器使用测试?

你应该使用ExpectedException额外的维护。失败,测试失败如果不是抛出的异常(仍然在VS 2010和。net 4 Microsoft.VisualStudio.QualityTools.UnitTestFramework):

[TestMethod]
[ExpectedException(typeof(MyException))]
public void TestThrowsException() {

    Do.SomethingThatThrowsAnException();
    assert.fail("No exception ;-(");

}




相关问题
热门标签