详细信息

建议类型:抛出 NullPointerException

是否可在首选项配置:否

过滤器分类:异常/断言错误

说明

在测试运行期间抛出 NullPointerException 时,UTA 会显示此建议。根据您的代码,可以使用以下操作链接:

  • 突出显示 - 在单元测试助手视图突出显示执行流中的问题。
  • 转到 - 导航至抛出 NullPointerException 的代码。
  • 空源 - 导航至 null 来源。
  • 模拟它 - 模拟作为 null 来源的对象的值。
  • 实例化它 - 创建作为 null 来源的对象的实例
  • 生成丢失的桩 - 模拟在 mock 上调用的方法
  • 使用 AI 修复 - 使用 AI 为失败的测试提供修复建议。此操作链接将打开一个对话框,显示 LLM 提供者的输出,并提供如何修复测试的建议。可以使用应用修复关闭按钮。点击应用修复会打开一个差异编辑器,显示 AI 返回的更改建议。点击应用接受更改并更新测试,或者点击取消返回 LLM 输出对话框。您还可以在接受更改前进一步更改更新的测试源代码。要使用该功能,必须在许可证设置中启用“LLM Integration”许可证功能,同时启用并配置 LLM 提供者(请参阅配置 LLM 提供者设置)。 

    此功能依赖于 LLM,生成的信息可能不准确。

(info) UTA 可以在一个源类中检测到 NullPointerException。

有关针对异常显示的更多选项,请参阅异常和断言错误

示例

在下面的示例中,customernull

在 customer 对象上调用 getName 方法时,抛出 NullPointerExceprion:

UTA 检测到 NullPointerException 并在建议视图中显示以下信息:

修复

您可以通过以下方式之一防止抛出 NullPointerException:

  • 点击空源导航至 null 来源并手动修改代码。例如,您可以手动实例化 customer 对象,以确保对象值不为 null。
  • 点击实例化它来自动实例化对象。测试将会更新,包含创建 customer 对象实例所需的代码。您可能需要手动替换 UTA 生成的默认值。

            
  • 点击模拟它来自动模拟对象值。测试将会更新,包含创建模拟所需的代码。


    然后重新运行测试。UTA 将显示已抛出 NullPointerException 的信息,因为在模拟对象上调用了 getName 方法。
    点击生成丢失的桩对在模拟的 customer 对象上调用的 getName 方法进行模拟。


         
    测试将会更新,包含对 getName 方法打桩所需的代码。


  • 点击标记为预期异常,将 @Test(expected=NullPointerException.class) 注解添加到测试代码中。这将避免 UTA 在后续测试运行中显示此建议。


  • No labels