- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
NUnit ExceptionAsserts documentation列出几种形式。除了重载,这些形式可用:
Assert.Throws(/* params here, incl. delegate w/ code */)
Assert.Throws<T>(/* params here, incl. delegate w/ code */)
Assert.DoesNotThrow(/* params here, incl. delegate w/ code */)
我在这里遗漏了一个,这也是我所期望的:
Assert.DoesNotThrow<T>(/* params here, incl. delegate w/ code */)
目前我只使用 DoesNotThrow
可用的版本,并祈祷它永远不会隐藏确实指示问题的类型的异常。这确实不尽如人意。
我真的很想区分与测试相关的异常(例如 Assert.DoesNotThrow<SqlException>
)和不相关的异常(例如 NullReferenceException
)。这不是什么大事,因为非泛型 DoesNotThrow 断言不会影响何时测试将是红色/绿色,但它会影响如何它报告为红色。
在我开始创建自己的 Assert 扩展来处理这个问题之前,我想问:我在这里遗漏了什么吗?我想要的表格因某种原因无法使用吗?使用其他 NUnit 位是否可以轻松实现?
最佳答案
评论和缺乏答案表明在 NUnit 中没有这样的方法。
正如评论中所建议的,您可以使用 DoesNotThrow
非泛型方法只是忽略了一个事实,即其他类型的异常将显示与 Assert 失败相同类型的输出。
评论中的另一个建议是编写您自己的辅助方法,如果有人关心这里有一个可能的版本:
public static void AssertDoesNotThrow<T>(NUnit.Framework.TestDelegate testDelegate) where T : Exception
{
try
{
testDelegate.Invoke();
}
catch (T exception)
{
Assert.Fail("Expected: not an <{0}> exception or derived type.\nBut was: <{1}>",
typeof (T).FullName,
exception.GetType().FullName);
}
}
对于违反断言的测试委托(delegate),您会得到一个漂亮的“失败”和这种类型的输出:
Expected: not an <System.ArgumentException> exception or derived type.
But was: <System.ArgumentException>
对于意外错误,异常本身的测试失败。
至于我自己,我想我会接受这样一个事实,即这在 vanilla NUnit 中不存在,并继续使用非通用版本。
关于c# - 与 Throws<T> 方法类似的通用 DoesNotThrow<T> 方法在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23041293/
是否可以将 Assert.DoesNotThrow 用于特定的异常类型? 例如,我如何验证方法调用没有具体抛出 NullReferenceExceptions,但它可能抛出我不关心的 NotSuppo
我正在使用 NUnit 进行单元测试(与 TD.NET 一起运行)。 当使用 Assert.DoesNotThrow 时,我得到异常,但没有任何堆栈跟踪,这使得更难识别根本问题。 我该如何解决这个问题
在我的 NodeUnit 测试中,我有这样一段代码: exports['aTest'] = function(test){ ... var functionResult = test.doesNotT
NUnit ExceptionAsserts documentation列出几种形式。除了重载,这些形式可用: Assert.Throws(/* params here, incl. delegate
我是一名优秀的程序员,十分优秀!