概述
您可以通过选择单元测试助手视图或 IDE 上下文菜单中的创建测试套件选项轻松创建测试套件。当您选择创建测试套件选项时,UTA 将会:
- 分析所选范围内的方法。
- 创建测试用例。
- 可选:使用 AI 优化 UTA 生成的失败测试。(UTA 可能会创建一定数量的失败测试,这些测试虽然失败了,但仍能提供一些覆盖率。在此步骤中,UTA 能利用 AI 更新失败的测试,使其通过。)
要使用此功能:
- 必须先在 Parasoft 首选项中配置 LLM 提供者(请参阅配置 LLM 提供者设置)。
- 必须在 UTA 首选项中启用使用 AI 修复失败的生成测试 (需要配置 LLM 提供者) 选项(请参阅测试创建选项)。
此功能依赖于 LLM,生成的信息可能不准确。 使用跟踪和做出断言功能添加断言,运行创建的测试(详细信息,请参阅跟踪对象变更和创建断言)。
如果您使用的是 Eclipse IDE,必须启用 Build Automatically 选项(Project 菜单> Build Automatically)才能添加断言。如果禁用该选项,在测试运行期间不会添加任何断言。
要自定义 UTA 创建的测试用例,可查看测试代码中的值和断言,并根据需要进行更新。此外,还可以使用运行选项重新运行测试以使用 UTA 建议优化测试用例(请参阅使用单元测试助手执行单元测试)。
为单个文件创建测试套件
通过以下方法之一打开单元测试助手 - 创建测试套件对话框:
在编辑器中选择一个类,然后点击单元测试助手视图中的创建测试套件操作链接:
右键点击 Project Explorer 中的文件,然后在上下文菜单中选择 单元测试> 创建测试套件:
配置测试创建选项。
优化测试套件用于:- 您可以指定为所选方法创建测试的优先级。
- 最大代码覆盖率 - UTA 将根据需要创建尽可能多的测试,以覆盖尽可能多的方法执行路径。启用此选项有助于实现最高的覆盖率,但测试用例的复杂性和潜在重叠有可能会带来维护问题。
- 测试套件可维护性 - UTA 创建的测试更少,只覆盖主要的执行路径。启用此选项有助于创建更简单且更容易维护的测试,但覆盖率会更低。模拟初始化 - 您可以指定模拟的初始化方式。
- 在测试方法中配置 - 通过在测试方法中声明和初始化被测对象及其依赖项来初始化模拟。
- 使用 @InjectMocks - 通过使用 @InjectMocks 注解标记需要执行模拟注入的字段并使用 @Mock 注解标记其依赖项来初始化模拟。详细信息,请参阅配置模拟初始化。- 测试模板 - 您可以指定用于创建新类的模板。详细信息,请参阅配置测试模板。
创建测试用例用于: - 您可以指定要为其创建测试用例的方法。您可以使用选择全部、取消全部选择或选择修改的 (*) 按钮来更改列表中的选择。选择修改的 (*) 按钮仅选择在源码控制中已修改的方法(用星号表示)。
注意:Eclipse 和 IntelliJ 必须要将项目识别为 Git 项目,此修改方法功能才能生效
- 点击 OK。UTA 将会:
- 为文件中所有选定的方法(包括已经有相应测试的方法)创建测试用例。
- 运行测试并创建断言。
- 如有必要,可检查测试并修改值和断言。
- 使用 UTA 运行测试以收集覆盖率信息并获取改进建议(请参阅使用单元测试助手执行单元测试)。
为多个文件创建测试套件
UTA 可以一次性为多个文件创建测试用例。您可以为指定的一组文件中所有方法创建测试,也可以根据您选择的比较标准仅为一组文件中已修改的方法创建测试。
- 右键点击要为其创建测试用例的文件、包或项目。此外,还可以选择同一个类中的多个方法(选择不同类中的方法,或者同时选择一个方法与一个类或一个包,均无法创建测试用例)。
点击单元测试> 创建测试套件打开单元测试助手 - 创建测试套件对话框。
- 配置测试创建选项。
- 优化测试套件用于:- 您可以指定为所选方法创建测试的优先级。
- 最大代码覆盖率 - UTA 将根据需要创建尽可能多的测试,以覆盖尽可能多的方法执行路径。启用此选项有助于实现最高的覆盖率,但测试用例的复杂性和潜在重叠有可能会带来维护问题。
- 测试套件可维护性 - UTA 创建的测试更少,只覆盖主要的执行路径。启用此选项有助于创建更简单且更容易维护的测试,但覆盖率会更低。 模拟初始化 - 您可以指定模拟的初始化方式。
- 在测试方法中配置 - 通过在测试方法中声明和初始化被测对象及其依赖项来初始化模拟。
- 使用 @InjectMocks - 通过使用 @InjectMocks 注解标记需要执行模拟注入的字段并使用 @Mock 注解标记其依赖项来初始化模拟。详细信息,请参阅配置模拟初始化。- 测试模板 - 您可以指定用于创建新类的模板。详细信息,请参阅配置测试模板。
- 创建测试用例用于 - 您可以指定要为其创建测试用例的方法。
- 全部选择 - 为选择中的所有源文件创建测试用例。
- 本地修改的方法 - 仅为选择中修改的方法创建测试用例。- 相较于 - 为所有在比较磁盘上的文件与指定提交中的内容时发现的已修改方法创建测试。
- 自当前分支分叉于 - 为项目当前分支从指定分支分叉以来修改的所有方法创建测试。必须指定当前分支的来源分支。
- 提交或分支 - 您可以指定用于相较于和自当前分支分叉于设置的提交、分支、或标签。提交或分支下拉菜单保存了输入历史。它包含两个用于相较于设置的预设值:
- “本地分支上的最新提交”- 为本地修改但未提交的代码创建测试。
- “远程分支上的最新提交”- 为本地修改但未提交的代码以及未推送到远程分支的任何本地提交中的更改创建测试。
注意:
不支持 Git reflog 引用。
考虑以下关于使用本地修改的方法和提交或分支设置的建议:
如果您只有本地修改,并且希望在提交前为受影响的代码生成测试,我们建议使用“相较于”和“本地分支上的最新提交”设置。
如果您有尚未推送的本地提交,并且希望为这些提交生成测试,包括当前任何本地更改,我们建议使用“相较于”和“远程分支上的最新提交”设置。
如果您已将提交推送到某个分支,例如功能或开发分支,并且现在功能或修复已完成,您希望为该分支中所做的所有更改生成测试,我们建议使用“自当前分支分叉于”并指定当前分支的父分支。例如,如果您使用的是从 master 分支分叉的“feature/foo”功能分支,则可以指定“master”。
- 没有为所选代码配置 Git 仓库时,本地修改的方法和提交或分支设置不可用。
- 优化测试套件用于:- 您可以指定为所选方法创建测试的优先级。
- (可选)将鼠标悬停在许可证使用概要选项上可以显示为所选资源创建测试用例预计所需的令牌数量。测试生成后,概要对话框将显示实际消耗了多少令牌以及剩余多少令牌(请参阅许可)。
- 点击 OK。UTA 将会:
- 创建测试用例,跳过无法测试或已存在相应测试类的文件。
- 运行测试并创建断言。
- 使用 UTA 运行测试以收集覆盖率信息和可能的优化建议(请参阅使用单元测试助手执行单元测试)。
许可
为修改后的方法(与本地或远程分支比较)创建测试需要“Unit Test Single Class Creation”许可证功能,在该情况下不会消耗许可证令牌。为全部选择、与指定的提交或分支比较存在修改的方法、自当前分支分叉于指定提交或分支创建测试,需要“Unit Test Bulk Creation Tier”许可证功能之一。这些功能提供了许可证令牌,根据为其生成测试用例的文件数量进行消耗(可用令牌数量视您的许可协议而定)。在这类情况下,UTA 针对每个为其创建测试的 .java 文件消耗一个令牌。
- UTA 没有为其生成任何测试用例(例如,接口或抽象类)的文件不消耗令牌。
- 一旦为某个 java 文件消耗过令牌,即使第一次生成的测试被删除,为该 .java 文件重新生成测试也不会额外消耗令牌。
潜在设置问题
如果批量创建的结果不符合期望,这可能表明项目中存在设置问题。更多信息,请参阅如何诊断潜在设置问题?。