codecamp

IntelliJ IDEA测试驱动开发

无论您喜欢在编写生产代码之前编写测试,还是想在以后创建测试,IntelliJ IDEA 可以轻松创建和运行单元测试。在本教程中,我们将展示如何使用 IntelliJ IDEA 来首先编写测试(测试驱动开发或 TDD)。

测试驱动开发(Test-Driven Development)简称 TDD,是以测试作为软件开发的核心,将测试贯穿于软件开发工程的方法论,TDD 同时也是 XP(极限编程)的核心之一。

IntelliJ IDEA 测试驱动开发条件

如果要实现 IntelliJ IDEA 测试驱动开发有以下的几个先决条件:

  • 你已经在 IntelliJ IDEA 中创建了一个 Java 项目。
  • 您也可以使用生产和测试代码的文件夹,可以是您手动创建的或者是创建项目时创建的。
  • 您可以通过添加测试库或在 Gradle 或 Maven 中添加依赖项,在类路径上有 JUnit 4。
  • 源和测试根源是是正确配置的:源根将显示为蓝色文件夹,测试文件夹将具有绿色背景。
  • 您已在项目中创建了所需的包。

创建第一个测试

鉴于我们首先编写我们的测试,而不必为我们测试可用的类,我们将通过项目面板创建我们的第一个测试。

  • 右键单击要创建测试的包,然后选择:新建| Java 类(New | Java Class)。
  • 输入测试名称 - 假设我们正在使用 JUnit 进行测试,这可能是 [Something] 测试,例如MoodAnalyserTest

IntelliJ IDEA

  • 将光标放在类的大括号中的某个位置,按 Alt+Insert。
  • 从菜单中选择:测试方法| JUnit 4(Test Method | JUnit 4)。这将创建一个带有默认模板的测试方法。填写测试名称,按回车键,光标将结束于方法体。
IntelliJ IDEA
IntelliJ IDEA

你可以改变默认的测试方法模板,例如,如果您希望将方法名称的开始从test更改为should

编写测试体

为不存在的类和方法编写测试代码可能似乎是直觉的,IntelliJ IDEA 保持编译器使用的简单直观。IntelliJ IDEA 可以为您创建类和方法,如果它们不存在。

  1. 编写测试描述你想要实现的测试,按 Alt+Enter 在任何不存在的类上输入并选择“创建类'[ClassName]'“。这将作为您提供一个适用于编译器的最小实现
    IntelliJ IDEA编写测试体
  2. 继续编写测试主体,包括您不需要的方法的名称,您可以再次使用 Alt+Enter 并选择“创建方法'[methodName]'“来使 IntelliJ IDEA 创建一个裸机框架方法。
    IntelliJ IDEA编写测试体

    与往常一样,您可以使用 IntelliJ IDEA 的重构工具创建变量来存储结果,如果正确的库位于类路径上,IntelliJ IDEA 将为您导入最合适的类。

运行测试

当遵循 TDD 方法时,通常你会经历一个 Red-Green-Refactor 循环。你会运行一个测试,看到它失败(转到红色),实现最简单的代码以使测试通过(转到绿色),然后重构代码,使您的测试保持绿色,并且代码足够干净。

这个循环的第一步是运行测试并且看到它失败。

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

  • 从测试内部,按下 Ctrl+Shift+F10 以运行此单个测试。

    结果将显示在“运行”对话框中。该测试名称旁边会有一个图标(红色表示异常),或黄色表示失败的断言。对于任一类型的失败,还会显示一条消息,说明出了什么问题。

    IntelliJ IDEA运行测试

实现代码

下一步是使测试通过,这意味着实现最简单的工作。

  1. 您可以使用通常的方法导航到正在测试的代码 - 点击方法名称,在光标位于方法名称上时按下 Ctrl+Alt+B,或者按下 Ctrl+Shift+T 以在测试和生产代码之间切换。
  2. 对于方法进行更改以使测试通过。通常使用 TDD,最简单的工作可能是硬编码您的预期值。我们稍后会看到,如何迭代这个过程将导致更逼真的生产代码。
  3. 重新运行测试,使用 Shift+F10 重新运行上一个测试。
  4. 查看测试通行证 - 测试方法旁边的图标应该变为绿色。如果没有,则在测试通过之前进行所需的更改。
    IntelliJ IDEA实现代码

迭代

开发代码是一个迭代过程。当采用 TDD 风格的方法时,这更为真实。为了推出更复杂的行为,我们为其他情况添加测试。

  1. 在测试类中,再次使用 Alt+Insert 来创建一个新的测试方法。
  2. 选择第二个测试用例,指定您正在测试的方法的更多要求。请记住,您可以使用 IntelliJ IDEA 的功能来创建类和方法来保持编译器的快乐。
  3. 运行第二个测试用例,显示出正确的原因失败。
  4. 更改正在测试的方法中的代码以使此测试通过。
  5. 通过在测试类内部按 Ctrl+Shift+F10 重新运行这两个测试,而不是在单个方法中,并且看到这两个测试都通过了。如果任一测试失败,请对代码进行所需的更改以确保测试通过。
    IntelliJ IDEA迭代

总结

以第一个测试样式编写第一个测试需要少量设置:创建测试类,创建测试方法,然后创建最终将成为生产代码的代码的空实现。IntelliJ IDEA 自动执行了很多初始设置。

在您迭代过程中,创建测试,然后进行所需的更改以使这些测试通过,您将为您所需的功能构建一套全面的测试套件,以及满足这些要求的最简单的解决方案。

IntelliJ IDEA怎么为测试创建运行/调试配置
IntelliJ IDEA如何执行测试
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

IntelliJ IDEA的一般准则

什么是IntelliJ IDEA项目

使用IntelliJ IDEA的意图行为

IntelliJ IDEA使用运行/调试配置

特定于VCS的程序

IntelliJ IDEA语言和特定框架指南

IntelliJ IDEA的数据库和SQL功能

IntelliJ IDEA使用之JavaServer Faces(JSF)

IntelliJ IDEA:分析PHP应用程序的性能

IntelliJ IDEA:调试PHP应用程序

IntelliJ IDEA:适用于PHP的Google App Engine

IntelliJ IDEA更多内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }