单元测试专注于程序中的最小可测试单元,这通常包括函数、类的方法或模块等。其核心目的是确保这些基本单元能够正确执行特定的功能,并妥善处理各种边界条件和异常情况。单元测试的目的是确保这些基本组成单元按照预期工作,能够正确地执行特定的功能,并且能够妥善处理各种边界条件和异常情况。
以下是腾讯云 AI 代码助手在单元测试中的应用实践:
AI 在单元测试中的应用
1. 代码补全与单元测试生成。
腾讯云 AI 代码助手基于上下文理解,能够自动推荐最可能的代码片段,包括方法调用、变量声明、循环结构等。此外,它还能根据现有代码结构,自动生成对应的单元测试案例,确保代码变更时功能的稳定性。


如上图所示,可以通过对话框中的 /test 生成单元测试,或者使用 IDE 编码区域中使用每个功能方法的快捷键生成测试来生成该方法的单元测试。
2. 多轮对话优化测试用例。
开发者可以通过多轮对话,告诉 AI 代码助手更多的信息,让生成的单元测试更符合业务预期。例如,可以指定业务边界条件、特殊的异常处理逻辑、数据处理方式等等。
对于生成的内容,如果有额外的测试场景需求,可以通过多轮对话追加提问。如下图所示:


AI 代码助手的对话模型会识别用户意图、结合上下文对话内容优化单元测试结果。如下图所示:


3. 一键应用生成的单元测试内容。
通过对话框生成结果中的快捷按钮,包括应用、插入到 IDE、复制、新建文件、保存到本地,开发者可以快速判断和接受生成的单元测试代码。如下图所示:


例如可以选择应用,将对话生成的结果,以 diff 的形式应用到对应的代码文件中,可以做出采纳或放弃的选择处理。如下图所示:


实际编码案例解析
1. 针对业务代码准确生成单元测试。
在真实的开发场景中,软件的功能都是异常复杂的,一个完整的软件功能由多个类、方法共同组成。以 Java 开发为例,一个功能的开发,可能由 类的定义、Controller 控制层的方法、Server 接口定义、ServiceImpl 接口实现类方法、Repository 和 DTO 等等部分组成。在生成单元测试的时候,需要考虑到真实业务中的各个组件关联性。
接下来,我们以一个Java工程为例,需要AI代码助手帮我们准确生成接口实现类 EstateServiceImpl.java 中的查询和模糊查询方法对应的单元测试代码。


我们选中 getEstates 和 getEstatesContainingText 方法之后,使用 /test 为其生成单元测试代码。在结果中可以看到,腾讯云 AI 代码助手在生成单元测试的时候,会分析代码的工程结构,并在生成的时候智能 import 相关依赖;在生成测试代码的时候,会结合其他文件中的类和方法定义生成测试计划,并准确构造测试数据。如下图所示:


将生成的单元测试内容,插入到指定单元测试文件中,可以直接执行 mvn test 命令进行单元测试验证,如下图所示可以看到这里生成的代码可以编译通过,并完成单元测试功能。


2. 结合业务逻辑逐步完善测试结果。
在真实的业务开发过程中,有很多测试场景都是隐晦的,它的逻辑可能并没有直接定义在代码内容中,而是需要结合实际需求而定。这种场景下,需要研发人员使用对话功能告诉 AI 代码助手这里的业务测试逻辑,继而完善测试代码。
我们可以通过多轮对话能力,继续输入真实业务场景,丰富测试的边界条件,让 AI 持续优化单元测试结果。如下图所示:


我们将生成的扩展内容应用到之前的单元测试代码中,并执行下这里生成的最终结果,可以看到执行成功。


总结
腾讯云 AI 代码助手结合腾讯混元大模型的功能,已经在单元测试领域展现出了显著的价值,它不仅提高了开发效率,还帮助确保了软件的质量和稳定性。随着技术的不断进步,在软件工程3.0的时代下,AI 在单元测试中的应用将更加广泛和深入,为软件开发带来更多的便利和创新。