在 C# 单元测试中,验证代码是否在特定条件下抛出正确的异常是确保程序健壮性的重要一环。本文将手把手教你如何在 C# 单元测试中进行预期异常验证,即使你是编程小白,也能轻松掌握!
想象一下,你写了一个除法方法,当除数为 0 时,应该抛出 ArgumentException。如果这个异常没有被正确抛出,程序可能会崩溃或产生错误结果。因此,在单元测试中验证异常行为,能有效防止这类问题。
在 C# 中,NUnit 是最流行的单元测试框架之一。它提供了多种方式来验证预期异常,下面我们以 NUnit 为例进行讲解。
Assert.Throws这是最直观的方式。你告诉 NUnit:“当我执行这段代码时,应该抛出指定类型的异常。”
[Test]public void DivideByZero_ShouldThrowArgumentException(){ // Arrange var calculator = new Calculator(); // Act & Assert Assert.Throws<ArgumentException>(() => calculator.Divide(10, 0));} 上面的代码表示:调用 calculator.Divide(10, 0) 时,应抛出 ArgumentException。如果没抛出,或者抛出了其他类型的异常,测试就会失败。
Assert.That + Throws.Exception这种方式更灵活,尤其适合需要进一步验证异常信息的场景。
[Test]public void DivideByZero_ShouldThrowWithMessage(){ var calculator = new Calculator(); var ex = Assert.Throws<ArgumentException>( () => calculator.Divide(10, 0) ); // 验证异常消息是否包含期望内容 Assert.That(ex.Message, Does.Contain("除数不能为零"));} [TestCase] 批量测试异常如果你有多个输入都应触发相同异常,可以用参数化测试简化代码:
[TestCase(0)][TestCase(-0.0)]public void DivideByZero_Cases_ShouldThrow(double divisor){ var calculator = new Calculator(); Assert.Throws<ArgumentException>(() => calculator.Divide(5, divisor));} Exception。ex.Message 内容。通过本文,你已经掌握了在 C# 单元测试中进行预期异常验证的核心方法。无论是使用 Assert.Throws 还是结合 Assert.That,都能有效确保你的代码在异常路径下表现正确。记住,良好的异常处理是构建可靠软件的关键,而NUnit异常测试正是实现这一目标的利器。
现在,就去为你的项目添加这些异常断言吧!让每一个可能出错的地方都被单元测试牢牢守护。
关键词回顾:C#单元测试、预期异常验证、异常断言、NUnit异常测试
本文由主机测评网于2025-12-08发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124865.html