IntelliJ IDEA 2025.3 Help

教程:使用 Kotlin 进行测试驱动开发

无论您喜欢在编写生产代码之前编写测试,还是喜欢事后再创建测试, IntelliJ IDEA 都能轻松创建并运行单元测试。 在本教程中,您将学习如何使用 IntelliJ IDEA 优先编写测试(测试驱动开发或 TDD)。

创建新项目

  1. 启动 IntelliJ IDEA。

    如果打开欢迎屏幕,请单击 新建项目。 否则,请在主菜单中转到 文件 | 新建 | 项目

  2. 在左侧列表中,选择 Kotlin。 将新项目命名为 TDD-in-Kotlin ,如有必要,可以更改其位置。

  3. 选择 Gradle 作为构建工具,并将 Kotlin 作为 DSL。

  4. JDK 列表中选择您想在项目中使用的 JDK

    如果 JDK 已安装在您的计算机上,但未在 IDE 中定义,请选择 添加 JDK 并指定 JDK 主目录的路径。

    如果您的计算机上没有必要的 JDK,请选择 下载JDK

    有关 JDK 及其安装方法的更多信息,请参见 Java Development Kit (JDK) 指南

  5. 点击 创建

IntelliJ IDEA 创建了一个具有预配置结构和基本库的项目。

创建新包

  1. 项目 工具窗口中,右键单击 main | kotlin 文件夹,并选择 新建 | 包

  2. 将新包命名为 com.example.demo ,然后按下 Enter

编写测试主体

创建您的第一个测试

鉴于我们在没有可供测试的代码的情况下先编写测试,我们将通过项目面板创建第一个测试。

  1. 右键点击测试根文件夹 并选择 新建 | Kotlin 类/文件

    在打开的弹出窗口中,为新包和测试类命名: com.example.demo.CalculatorTest

    测试类已创建
  2. 将插入符号置于类的大括号内,按下 Alt+Insert

  3. 请从菜单中选择 测试功能 以从默认模板创建一个测试函数。 选择 JUnit 5 作为测试框架。

    命名函数 testMultiplyBy2 ,按下 Enter ,光标将定位到函数体内。

    创建您的第一个测试

    您可以更改 默认测试函数模板——例如,如果您希望将函数名称的开头从 test 更改为 should

编写测试主体

看起来为不存在的类和函数编写测试代码有点反直觉,但是 IntelliJ IDEA 使这一过程变得简单,同时保持编译器满意。 IntelliJ IDEA 可以为您创建类和函数(如果它们尚不存在的话)。

编写您的测试,描述您想要实现的目标,在任何不存在的类上按 Alt+Enter 并选择 创建类。 这将为您提供一个让编译器满意的最小实现。

  1. 键入 val calculator = Calculator() ,按下 Alt+Enter ,然后选择 创建类“Calculator”

    创建新类
  2. 选择类容器 中选择 提取到单独文件。 在打开的对话框中,选择我们 先前创建main 中的 com.example.demo 包。

  3. 继续编写测试主体,包括您需要但不存在的函数名称。

    输入 val result = calculator.parse("2 * 2") 并按 Alt+Enter。 选择 创建成员函数 以让 IntelliJ IDEA 创建一个基本的脚本函数。

    创建函数
  4. 实现经过测试的函数,以便返回所需类型并且可以无误编译。 现在结果的正确性并不重要。

    在被测试的类中实现该函数
  5. 在测试函数中添加一个断言。 此语句将比较函数的实际返回值与预期返回值,从而确定测试的结果。 输入 assertEquals(4, result)

    如果函数未自动导入,请将文本光标置于 assertEquals ,按下 Alt+Enter ,选择 导入功能 ,然后选择 org.jetbrains.kotlin:kotlin-test

    assertEquals() 用于检查参数是否相等,如果不相等则测试失败

运行测试

遵循 TDD 方法时,通常会经历一个 红—绿—重构 循环。 您将运行一次测试,看到其失败(变为红色),实现最简单的代码以使测试通过(变为绿色),然后重构代码,使您的测试保持绿色,且代码足够干净。

此循环的第一步是运行测试并看到其失败。

鉴于我们已使用 IntelliJ IDEA 的功能为正在测试的方法创建了最简单的空实现,我们并不指望测试会通过。

  • 在测试中,按下 Ctrl+Shift+F10 以运行此单个测试。

    结果将显示在 运行对话框中。 测试名称旁会显示一个图标——异常为红色,断言失败为黄色。 对于任意一种失败,还会显示说明出错原因的消息。

    运行测试

实现代码

下一步是让测试通过,这意味着实现最简单可行的内容。

  1. 您可以使用常规功能导航到正在测试的代码——点击函数名称、在文本光标位于函数名称上时按 Ctrl+Alt+B ,或按 Ctrl+Shift+T 在测试代码和生产代码之间切换。

  2. 对函数进行修改以使测试通过。 在 TDD 中,最简单可行的内容往往可能是将期望值硬编码。 稍后我们将看到,如何通过迭代此过程来得到更贴近实际的生产代码。

    修复方法的代码以满足测试条件
  3. 请使用 Shift+F10 来重新运行上次的测试。

  4. 请等待测试函数旁边的图标变绿以确保测试通过。 如果图标没有变成绿色,请不断修改代码直到测试通过。

    重新运行测试

迭代

开发代码是一个迭代过程。 在遵循 TDD 风格的方法时,这一点更加正确。 为了推动更复杂的行为,我们为其他情况添加测试。

  1. 在您的测试类中,再次使用 Alt+Insert 创建一个新的测试函数。

  2. 选择第二个测试用例,以指定您正在测试的功能的更多需求。 请记住,您可以使用 IntelliJ IDEA 的功能来创建类和函数,以使编译器保持满意。

    创建新测试
  3. 运行此第二个测试用例,以展示其因正确的原因而失败。

  4. 更改被测试函数中的代码以使此测试通过。

    改进代码以通过第二个测试
  5. 重新运行两个测试,方法是按 Ctrl+Shift+F10 在测试类内,而不是在单个函数内,看看两个测试现在是否都通过。 如果任一测试未通过,请对代码进行必要的更改以确保测试通过。

    第二个测试通过

总结

以测试优先的方式编写您的第一个测试需要进行一些设置——创建测试类、创建测试函数,然后创建最终将成为生产代码的代码的空实现。 IntelliJ IDEA 自动化了很多初始设置。

随着您在此流程中不断迭代,先创建测试,再进行使这些测试通过所需的更改,您将为所需的功能构建起一套完整的测试套件,以及能够满足这些需求的最简单解决方案。

最后修改日期: 2025年 12月 2日