gpt4 book ai didi

C# 如何在 Assert.AreEqual 中期待异常?

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:35 24 4
gpt4 key购买 nike

示例:

Assert.AreEqual(**null**, Program.nDaysMonth(5, -10), "Error nDaysMonth, Month may -10.");

我希望有一个异常(exception)。如何在 Assert.AreEqual 中期待异常?

谢谢。

最佳答案

你不使用Assert.AreEqual,你使用Assert.Throws:

Assert.Throws<ArgumentOutOfRangeException>(() => Program.nDaysMonth(5, -10));

这会检查是否抛出了正确的异常。如果你想添加更多的断言,你可以使用返回值:

var exception = Assert.Throws<ArgumentOutOfRangeException>(...);
Assert.AreEqual("Foo", exception.Message); // Or whatever

这至少适用于 NUnit 和 xUnit;如果您使用不同的测试框架,您应该寻找类似的功能。如果它不存在,我建议您自己实现它 - 这很容易做到,并且比替代方案(一个 try/catch block ,或一个方法范围的 ExpectedException 属性)干净得多。或者,如果可以的话,更改单元测试框架...

我还强烈建议您开始遵循正常的 .NET 命名约定 - nDaysMonth 不是一个好的方法名称。 .

某些框架支持使用 [ExpectedException] 属性装饰方法 - 我建议反对使用它:

  1. 这使得测试不清楚您希望在何处抛出异常。
  2. 如果在测试方法的其他地方抛出异常(即您的代码被破坏),测试仍然会通过。
  3. 抛出异常后,您将无法执行任何其他操作。
  4. 您无法检查有关异常的任何其他信息。

关于C# 如何在 Assert.AreEqual 中期待异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com