gpt4 book ai didi

unit-testing - 在没有 ExpectedException 属性的 nUnit 中预期异常

转载 作者:行者123 更新时间:2023-12-04 04:36:52 24 4
gpt4 key购买 nike

我有 的方法多个参数 通过在任何参数为 null 时抛出 ArgumentNullExceptions 和 ArgumentExceptions 来防止错误输入。

所以有两种明显的方法来测试这个:

  • 使用 [ExpectedException] 属性对每个参数进行一项测试
  • 使用多个 try{} catch 块对所有参数进行的一项测试

  • try catch 看起来像这样:
    try 
    {
    controller.Foo(null, new SecondParameter());
    Assert.Fail("ArgumentNullException wasn't thrown");
    } catch (ArgumentNullException)
    {}

    有一个小问题。如果测试通过,则永远不会调用 Assert.Fail,因此将突出显示为未涵盖的测试代码(由 NCover)。

    我知道这实际上不是问题,因为它是我想要 100% 覆盖的业务代码,而不是测试代码。我仍然很好奇是否有一种方法可以将多个异常抛出调用压缩到一个测试用例中而没有死的 LoC?

    最佳答案

    好吧,您可以通过提取实用方法将其减少到单个截止日期,例如

    public void ExpectException<T>(Action action) where T : Exception
    {
    try
    {
    action();
    Assert.Fail("Expected exception");
    }
    catch (T)
    {
    // Expected
    }
    }

    调用它:
    ExpectException<ArgumentNullException>
    (() => controller.Foo(null, new SecondParameter());

    (当然,您不需要将它包装在 IDE 中……SO 上的行长度非常短。)

    关于unit-testing - 在没有 ExpectedException 属性的 nUnit 中预期异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386017/

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