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

这篇文章演示了如何在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版本,但将测试代码更新为较新的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动通信教学大纲

1、绪论 基本内容&#xff1a;移动通信的发展概况和发展趋势&#xff1b;移动通信的概念、主要特点及其分类&#xff1b;移动通信的基本技术。 要求&#xff1a;了解移动通信概念、特点和分类&#xff0c;了解移动通信发展历史、基本技术和未来发展方向。 2、移动通信中的电波传…

移动通信蜂窝原理例题整理

目的很功利&#xff1a;会做题。 So~~上题&#xff01;&#xff01;&#xff01; 1、求波长和天线长度。 不接地天线长度是半波长整数倍&#xff0c;接地是1/4波长整数倍&#xff08;地面镜像效应&#xff09;。 2、大区制小区制概念理解 举例&#xff1a;30个双向信道 1、大…

spss三次指数平滑_17 统计学:SPSS基础

内容目录为什么要学习SPSSspss发展史spss操作界面spss基本使用方式SPSS的常用操作数据管理spss制作图表使用spss进行描述统计分析1.为什么要学习SPSS统计分析软件是数据分析的主要工具统计设计完成后&#xff0c;完整的分析过程包括数据的搜集数据的整理数据的分析结果的报告统…

【渝粤教育】电大中专就业指导(1)作业 题库

试卷答案 1.&#xff08; &#xff09;给中职生就业带来的机遇和挑战 A.“十三五”规划 B.一带一路 C.发展标准化服务业 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.最受企业欢迎的人才应具备&#xff08; &#xff09;素质 A.道德品质、文化认同、敬业精神、…

Spring构造函数依赖注入示例

欢迎使用Spring构造函数依赖注入示例指南。 基于构造器的依赖注入是Spring 依赖注入的一种 。 依赖注入的另一种类型是Setter注入和字段注入。 有关Spring依赖注入的更多信息&#xff1a; Spring二传手注射的例子 Spring田间注入 依赖注入–构造函数与现场注入 依赖注入和…

【渝粤教育】电大中专常见病药物治疗 (2)作业 题库

1.作为退热药&#xff0c;阿司匹林的劣势是&#xff08;&#xff09;。 A.口服吸收迅速而完全 B.婴幼儿发热用阿苯片 C.儿童用药可引起Reye综合征&#xff0c;尤其是病毒性感染引起的发热 D.作用于下丘脑体温调节中枢 E.解热镇痛作用较强 错误 正确答案&#xff1a;左边查询 学…

移动通信例题整理_第3章_无线信号的衰落

考前预习,只为做题。从题目出发,补充相关概念知识点。 S1 课件例题 一、求接收功率 1、例:如果发射机发射50W的功率,将其换算成(a)dBm和(b)dBW。如果该发射机为单位增益天线,并且载频为900MHz,求出在自由空间中距天线100m处接收功率为多少dBm。10km处 P r P_r P

outlook邮箱邮件内容乱码_VBA:Outlook和Excel综合运用

很多企业公司使用微软OUTLOOK作为公司邮箱进行业务往来。 我们经常需要将一些表格数据也展示给收件人&#xff0c;但是又不需要将整个工作簿添加为附件&#xff0c;那么最好的方法就是复制指定单元格区域内容然后粘贴进新邮件界面内就可以了。 偶尔写一个邮件&#xff0c;这样做…

JDK 9、10和11中的安全性增强

缩短JDK发布周期的原因之一是有可能推出更快的安全错误修复和增强功能。 在本文中&#xff0c;我们将简要回顾一下最新JDK版本中引入的主要安全增强功能。 由于这些增强功能中的大多数与TLS相关&#xff0c;因此必须了解TLS握手过程&#xff0c;如下图所示&#xff1a; JDK 9 …

【渝粤教育】电大中专建设工程法规 (2)作业 题库

1.建造师在工作中&#xff0c; 必须严格遵守法律、行政、 行业管理规范、 职业道德。 A.正确 B.错误 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.行政法规的制定主体是&#xff08; &#xff09;。 A.全国人民代表大会 B.最高人民法院 C.全国人民代表大会及其…

【渝粤教育】电大中专新媒体营销实务 (10)作业 题库

1.从信息传播行为上来看&#xff0c;传统的报纸杂志、广播节目、电视频道等媒体&#xff0c;主要针对的是一群用户的需求。这是指新媒体的&#xff08; &#xff09;特征。 A.实时化 B.移动化 C.个性化 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;B 2.互联网媒体是…

三星q90r如何升级系统_看尚电视强制升级风行系统,如何安装第三方软件?

最近,看尚电视强制升级系统,不论界面UI还是操作方式都与之前有所不同,就连就简单的下载第三方软件,很多用户表示升级之后处处碰壁,那么今天小编就来和大家讲一下升级之后所遇到的问题,方便大家及时熟悉新系统。1、如何安装第三方软件这次看尚电视升级后,安装第三方软件的方式与…

移动通信考前预习_第4章_全球移动系统(GSM)

课件例题 例&#xff1a; 现GSM系统有10MHz的频段&#xff0c;如果采用434\times343的频率复用&#xff0c;试求出这个系统里基站的频点配置。若改成333\times333的频率复用&#xff0c;那么情况又是如何&#xff1f; 练习&#xff1a; 现GSM系统有6MHz的频段&#xff0c;如果…

【渝粤教育】电大中专沟通技巧答案作业 题库

1.&#xff08; &#xff09;给中职生就业带来的机遇和挑战 A.“十三五”规划 B.一带一路 C.发展标准化服务业 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.&#xff08; &#xff09;个人原因会影响到中职生就业。 A.清闲期望 B.高薪期望 C.一步到位做管理的期…

remote vscode无git_vs code 使用git

1.下载git https://git-scm.com/2. git 全局设置git config --global user.name "xxxx"git config --global user.email "xxxxxx.com"3.创建git 本地仓库进入指定文件夹 执行git init添加远程 地址 git remote add origin https://gitee.com/richard1015/…

appengine_在Google的AppEngine上升级到Java 7

appengine如果您仍在Google AppEngine上运行Java 6应用程序&#xff0c;则将遇到严重的麻烦。 现在&#xff0c;AppEngine团队将随时发布1.8.9版&#xff0c;该版本将不再支持Java 6应用程序的部署。 现有的应用程序将继续运行。 但是您可能应该以必要的紧迫性升级应用程序&am…

Github常用搜索指令(毕设资料搜索必备)

1、language&#xff1a;限制语言 2、in&#xff1a;根据某个关键词来进行检索 关键词name项目名称description项目描述readme项目帮助文档语法&#xff1a;需要检索的内容 in:name或description或reademe 组合使用&#xff1a;加逗号即可 3、根据starts或fork关键词查找 单…

【渝粤教育】电大中专电商运营实操 答案作业 题库

1.电子商务最重要的是&#xff08; &#xff09; A.商务 B.网站 C.货物 D.信息技术 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.目前菜鸟网络依赖大数据和云计算已实现了哪些功能&#xff08; &#xff09; A.自动化仓库 B.智能发货 C.物流云加速 D.以上都正确…

Java:以CSV格式流式传输JDBC结果集

在上一篇文章中 &#xff0c;我展示了如何将java.sql.ResultSet转换为JSON并将其流回调用方。 这篇文章是关于以CSV格式流式传输的。 流式传输使您可以一点一点地传输数据&#xff0c;而不必将所有数据都加载到服务器的内存中。 例如&#xff0c;考虑以下ResultSet &#xff1…

button onclick 多个同名_多个按钮的OnClickListener()android

您只需按照以下步骤轻松实现……您不必为每个按钮编写新的onClickListener …只需将View.OnClickLister实现到您的Activity / Fragment ..它将实现名为onClick()的新方法,用于处理Button,TextView等的onClick事件.Implement OnClickListener() in your Activity/Fragmentpublic…