java项目使用junit

这篇文章演示了如何在Java 8之前的项目中使用JUnit 5,并解释了为什么它是一个好主意。

JUnit 5至少需要Java 8作为运行时环境,因此您想将整个项目更新为Java8。但是有时由于某些原因,您无法立即将项目更新为Java8。例如,应用程序服务器的版本生产环境中的产品仅支持Java7。但是由于生产代码中的某些问题,更新不会很快进行。

现在,问题是如何在不将生产代码更新为Java 8的情况下使用JUnit 5?

在Maven中(当然在Gradle中也是如此),您可以分别为生产代码和测试代码设置Java版本。

<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>7</source><target>7</target><testSource>8</testSource><testTarget>8</testTarget></configuration></plugin></plugins>
</build>

前提条件是您使用Java 8 JDK进行构建。

如果尝试在Java 7生产代码中使用Java 8功能,则Maven将使构建失败。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project junit5-in-pre-java8-projects: Compilation failure
[ERROR] /home/sparsick/dev/workspace/junit5-example/junit5-in-pre-java8-projects/src/main/java/Java7Class.java:[8,58] lambda expressions are not supported in -source 7
[ERROR]   (use -source 8 or higher to enable lambda expressions)

现在,您可以在项目中引入JUnit 5,并开始使用JUnit 5编写测试。

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><scope>test</scope>
</dependency>
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><scope>test</scope>
</dependency>
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><scope>test</scope>
</dependency>
<!-- junit-vintage-engine is needed for running elder JUnit4 test with JUnit5-->
<dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><scope>test</scope>
</dependency>

您不需要迁移旧的JUnit 4测试,因为JUnit 5具有测试引擎,可以与JUnit 5一起运行JUnit 4测试。因此,对于新的测试,请使用JUnit 5,并且仅在必须触摸它们时才迁移JUnit 4测试。

尽管您无法将生产代码更新为较新的Java版本,但将测试代码更新为较新的版本还是有一定好处的。

最大的好处是您可以在日常工作中编写测试时开始学习新的语言功能。 您不会在生产代码中犯初学者的错误。 您可以使用有助于改善测试的新工具。 例如,在JUnit 5中编写参数化测试比在JUnit 4中编写更舒适。以我的经验,在参数化测试有意义的情况下,开发人员使用JUnit 5编写参数化测试比使用JUnit 4编写。

上述技术也适用于其他Java版本。 例如,您的生产代码在Java 11上,而您想在测试代码中使用Java 12功能。 该技术的另一个用例是在日常工作中学习另一种JVM语言,例如Groovy,Kotlin或Clojure。 然后在测试代码中使用新语言。

这种方法有一个小陷阱。 IntelliJ IDEA无法分别设置Java版本以进行生产和测试。 因此,您必须将整个项目设置为Java8。如果您的生产代码使用正确的Java版本,则只有Maven构建会为您提供反馈。

链接

  • Maven项目设置

翻译自: https://www.javacodegeeks.com/2019/01/using-junit-5-pre-java-8-projects.html

java项目使用junit

java项目使用junit_在Java 8之前的项目中使用JUnit 5相关推荐

  1. Java开发环境的搭建以及使用eclipse创建项目

    一.Java 开发环境的搭建 这里主要说windows环境下怎么配置Java环境.如果是Linux环境参考本博客另一篇文章即可: Linux环境安装卸载JDK 1.首先安装JDK java的SDK简称 ...

  2. java se 与j2se_关于java:J2EE和J2SE项目之间的区别

    本问题已经有最佳答案,请猛点这里访问. 我已经从github下载了一个开源项目. 这是一个基于Maven的项目. 我如何理解该项目是J2SE项目还是J2EE项目? 这两种项目在结构上有何不同? Jav ...

  3. maven编译java1.8项目_maven正在用java 1.7编译代码,但我想用1.8编译它

    我正在使用maven,并希望使用JDK 1.8编译我的代码 . 所以我安装了JDK 1.8 然后(这是在Windows上)设置'path'变量和'JAVA_HOME' PATH = C:\ const ...

  4. IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常

    IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常 参考文章: (1)IntelliJ IDEA的Maven项目 ...

  5. junit5_在Java 8之前的项目中使用JUnit 5

    junit5 这篇文章演示了如何在Java 8之前的项目中使用JUnit 5,并解释了为什么它是一个好主意. JUnit 5至少需要Java 8作为运行时环境,因此您想将整个项目更新为Java8.但是 ...

  6. idea 新建的java项目没发run_IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行...

    首先,确保 IDEA 软件正确安装完成,Java 开发工具包 JDK 安装完成. IDEA 的 Java 项目 (Project) 则相当于 Eclipse 的工作空间 (workspace) 的概念 ...

  7. IntelliJ IDEA 如何创建一个普通的java项目,及创建java文件并运行

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/oschina_41790905/art ...

  8. java项目启动时登录,Java项目启动时报错解决方法

    当前位置:我的异常网» Java Web开发 » Java项目启动时报错解决方法 Java项目启动时报错解决方法 www.myexceptions.net  网友分享于:2013-08-07  浏览: ...

  9. java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文

    基于JAVA开发的电信IP计费系统设计毕业论文 本科毕业设计(论文)基于 JAVA 开发的电信 IP 计费系统毕业设计(论文)任务书学院:信息科学与工程学院 系级教学单位:电子与通信工程学号学生姓名专 ...

最新文章

  1. iOS开发之--解决 swap file “*.swp”already exists!问题
  2. VMware Network Adapter VMnet1和VMnet8 未识别的网络的解决方法
  3. SmartGit破解使用的个人方法
  4. IP数据包、ICMP协议以及ARP协议简单介绍
  5. 架设服务器虚拟主机教程,web服务器虚拟主机(服务器搭建虚拟主机教程)
  6. JS中原型和原型链的详细讲解(附代码示例)以及 new关键字具体做了什么的详细讲解
  7. 音响常见故障如何解决?
  8. 2019阿里巴巴Android实习生面经
  9. 施工现场工地监管如何能够接入4G摄像头实现流媒体服务器视频监控?
  10. HTTP状态码分类(常用HTTP状态码和HTTP状态码大全)
  11. Java的String类的常用方法【总结】
  12. 送书 | 火遍日本 IT 界的「鱼书」终出续作!!!!
  13. Unity上玩转数字人(Avatar)
  14. 尚硅谷JavaScript基础实战丨JS入门到精通全套完整版 P15
  15. 四旋翼无人机飞行控制算法H∞控制
  16. 区块链软件公司:区块链正在“入侵”你的日常生活。
  17. 服务器手工修改进程资源,图解Total Commander 7.0之22项更新与改进(推荐)
  18. Unity3D深入浅出 - 新版粒子系统 (Shuriken) - Tonge
  19. 水星无线网卡在linux安装
  20. JAVA 发送GMAIL 邮件

热门文章

  1. 小G的项链(Manacher)
  2. [CQOI2017] 老C的键盘(树形dp + 组合数)
  3. CF613D-Kingdom and its Cities【虚树,LCA,树链剖分,贪心】
  4. P1351-联合权值【树形结构】
  5. POJ3666-Making the Grade【线性dp】
  6. 洛谷UVA1328,POJ1961-Period【KMP,字符串】
  7. P2756,ssl2601-飞行员配对问题【网络流24题,最大匹配,dinic】
  8. 【贪心】失意(jzoj 2318)
  9. Tomcat启动超时问题Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
  10. Java基于socket服务实现UDP协议的方法