穿越JUnit流

关于JUnit 5迁移的好处之一是,您可以在老式模式下运行JUnit 4测试,并且所有内容仍然兼容。 不利的一面是,某些注释和方法在JUnit 4和JUnit 5中具有相同的名称,并且当两组库依赖项都可用时,很容易导入错误的内容并产生不符合要求的测试。努力工作。

但是,更糟糕的是,当没有意义的测试也没有使构建失败时。

考虑以下测试:

 import org.junit.Test;  import org.junit.jupiter.api.BeforeEach;  import static org.junit.Assert.assertEquals;  public class AccidentalJUnit4Test { @BeforeEach public void beforeEach() { } @Test public void test() { assertEquals( 1 , 1 ); }  } 

这是JUnit 5的注释和JUnit 4的一些可怕的汤。 它在IDE中运行,但是在maven构建中,它被忽略了,因为@Test来自错误的JUnit,并且我没有运行junit-vintage

那么运行junit-vintage吗?

这是怎么发生的?

就我而言,我已经导入了JUnit 5的TestContainers集成,该集成具有对JUnit 4的传递依赖。这不是很好,但还不是世界末日。 但是,我只希望代码中包含JUnit 5测试,但是我可能会意外地用JUnit 4位编写测试,没有人会注意到!

这些一半形式的测试从未打算如此,因此我希望它们使构建失败。

什么不起作用

  • Checkstyle – checkstyle可以扫描禁止的import语句,但是我不使用它进行src/test扫描,并且我们项目的checkstyle规则与另一个使用junit-vintage的有效项目共享。
  • Macker –复杂的扫描仪,似乎开箱即用
  • Enforcer –这将使我无法包括JUnit 4依赖项……只是我忍不住允许了

我为什么要在乎?

通过增加自动化功能来发现已知错误并告诉您有关错误的信息,这比在周围发出警告要好得多,而且仍然可能出现错误,从而使事情变得防错。

就像有人张贴标语来警告该水非常热,而不是在适当的温度下提供水一样!

任何可以赋予我们强制功能的东西都是有好处的。

什么有效

我在GitHub上找到了一个愚蠢而简单的答案。

这个Maven Grep插件效果很好:

 < build > < plugins > <!-- grep maven plugin set to filter naughty JUnit4 stuff --> < plugin > < groupId >net.radai</ groupId > < artifactId >grep-maven-plugin</ artifactId > < version >1.1</ version > < executions > < execution > < goals > < goal >grep</ goal > </ goals > < phase >test</ phase > < configuration > < greps > < grep > < failIfFound >true</ failIfFound > < filePattern >src/test/java/**/*.java</ filePattern > < grepPattern >import\s+(static\s+)?org\.junit\.(Assert|Test|Before|After|AfterClass|Assume|BeforeClass|ClassRule|Rule|FixMethodOrder|Ignore|Rule)</ grepPattern > < outputPattern >Found JUnit 4 imports in file ${fileName} at line ${lineNumber} : ${line}</ outputPattern > </ grep > </ greps > </ configuration > </ execution > </ executions > </ plugin > </ plugins > </ build >  <!-- you also need to add the distribution repo --> < pluginRepositories > < pluginRepository > < id >ossrh</ id > < url > https://oss.sonatype.org/content/groups/public </ url > </ pluginRepository > </ pluginRepositories > 

以上内容对我来说可以防止发生错误,它可能对您有用。

我在GitHub中放置了上述代码的一个工作示例(由于正确的原因而失败)。

信用到期

我几乎放弃了上述问题。 幸运的是,开源社区非常出色。

Radai Rosenblatt于2016年编写了此插件。一个名为Michal Lozinski的撰稿人于2017年添加了文件模式扫描。

当我们第一次尝试使用上述配置时,它没有用。 文档没有描述如何执行此操作,但是阅读插件的代码显示可以使用filePattern 。 但是,它没有用。

我今天联系了Radai,他更新了该插件的发行版,现在可以使用了。

没有开源,这是不可能的。 没有作者承担对陌生人的帮助的责任,这是不可能的。

谢谢!!!

翻译自: https://www.javacodegeeks.com/2019/08/crossing-junit-streams.html

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

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

相关文章

协议转换器安全使用须知

协议转换器能使处于通信网上采用不同高层协议的主机仍然互相合作&#xff0c;完成各种分布式应用。可以将IEEE802.3协议的以太网或V.35数据接口同标准G.703协议的2M接口之间进行相互转换。也可以在232/485/422串口和E1、CAN接口及2M接口进行转换。那么&#xff0c;我们在使用协…

怎么安装协议转换器?协议转换器安装方法解析

协议转换器是有很多种的&#xff0c;多数基本上是个2层设备&#xff0c;经常碰见的一种RAD的协议转换器是将2M的E1线路转换成V.35的数据线路连接路由器的设备&#xff0c;当然也有&#xff0c;2M转双绞线以太的&#xff0c;借助2M通信线路可以实现局域网范围的远程接入和扩大。…

关于协议转换器的分类以及工作原理的详细介绍

现如今&#xff0c;随着互联网的广泛应用&#xff0c;我们国内的网民也是突破了8.29亿&#xff0c;相信&#xff0c;大家对于网络这块是非常的熟悉了&#xff0c;它是一种虚拟的东西&#xff0c;但是它几乎存在于我们生活的各个角落&#xff0c;在很大程度的让我们的日常生活变…

ElasticSearch-Hadoop:从Hadoop到ElasticSearch索引产品视图计数和客户顶部搜索查询

这篇文章涵盖了如何使用ElasticSearch-Hadoop从Hadoop系统读取数据并在ElasticSearch中对其进行索引。 它涵盖的功能是在最近n天中为每个客户的产品浏览量计数和热门搜索查询编制索引。 可以在网站上进一步使用分析后的数据来显示最近浏览过的客户&#xff0c;产品浏览次数和热…

协议转换器是怎么分类的?主要有哪些类别?

工业通信采用的通信接口各不相同&#xff0c;需要多个设备之间的信息共享和数据交换&#xff0c;而常用的工控设备通信口有RS-232、RS-485、CAN和网络&#xff0c;由于各种通信结构的协议不兼容&#xff0c;使得异构网络之间的操作和信息交换难以进行&#xff0c;通过多协议转换…

协议转换器的特点有哪些?

现如今&#xff0c;随着计算机网络技术的迅猛发展&#xff0c;我们建立了大量的多种多样的网络系统&#xff0c;导致各种网络之间如何互连的问题。一个办法是推行国际标准&#xff0c;051网络体系结构及通信协议的国际标准已越来越成熟。但是&#xff0c;要把大量已存在的非051…

协议转换器的作用有哪些?

协议转换器一般用一个ASIC芯片就可以完成&#xff0c;成本低&#xff0c;体积小。它可以将IEEE802.3协议的以太网或V.35数据接口同标准G.703协议的2M接口之间进行相互转换。也可以在232/485/422串口和E1、CAN接口及2M接口进行转换&#xff0c;那么协议转换器的作用有哪些呢&…

协议转换器主要是应用在哪些地方?

协议转换器也叫接口转换器&#xff0c;它能使处于通信网上采用不同高层协议的主机仍然互相合作&#xff0c;完成各种分布式应用&#xff0c;它工作在传输层或更高。那么&#xff0c;协议转换器的作用有哪些呢&#xff1f;主要是应用在什么地方的呢&#xff1f;接下来就跟随飞畅…

协议转换器指示灯的含义

很多对协议转换器了解不是很深的朋友&#xff0c;对协议转换器上面的各个指示灯可能会区分不清&#xff0c;很多情况下会搞不清各个指示灯的含义&#xff0c;接下来杭州飞畅科技的小编就来带大家详细了解下协议转换器上各个指示灯的含义&#xff0c;一起来看看吧&#xff01; …

V.35协议转换器指示灯告警常见故障以及排除方法解析

我们在使用协议转换器的时候&#xff0c;可能常常会遇到一些故障问题&#xff0c;这个可能会困扰到很多朋友&#xff0c;在这里&#xff0c;杭州飞畅的小编专门整理了V.35系列协议转换器在使用过程中的一些常见的故障问题及解决方法&#xff0c;感兴趣的朋友可以一起来看看吧&a…

飞畅科技V.35协议转换器指示灯告警说明详细介绍

飞畅V.35系列协议转换器实现了E1接口与V.35接口之间的相互转换&#xff0c;是杭州飞畅科技推出的又一款广泛使用、备受好评的设备。此转换器的E1接口支持成帧和透明两种模式&#xff0c;广泛应用于计算机网络互连、DDN数据网接入、移动电话网的传输优化和基于E1的PCM网络的各种…

计算机图形学论文_论图计算

计算机图形学论文自从机械计算开始以来&#xff0c;图形概念就已经存在&#xff0c;并且在纯数学领域已经存在了数十年。 由于数据库的黄金时代&#xff0c;图形在软件工程中变得越来越流行。 图形数据库提供了一种持久化和处理图形数据的方法。 但是&#xff0c;图形数据库并不…

2M线路保护实现与应用

由于传输电路是出于最底层的物理传送平面&#xff0c;目前这些传输电路调度工作仍然停留在手工调度&#xff0c;即耗费大量的人力物力&#xff0c;又花费大量的宝贵时间&#xff0c;尤其在紧急故障发生的时候&#xff0c;严重影响故障的抢修速度&#xff0c;从而影响通信网络恢…

E1倒换保护设备知识详解

E1倒换是一款针对于国内重要部门而开发的保护设备&#xff0c;针对某些重要用户要求&#xff0c;E1倒换设备除了可以满足主、备两个传输路由间无损伤自动切换外&#xff0c;还可以满足主、备用户设备间自动切换。那么&#xff0c;什么是E1倒换&#xff0c;E1倒换保护怎么分类&a…

E1 PCM复用设备常见故障及处理方法

目前国内PCM设备技术发展非常迅速&#xff0c;PCM设备在通信系统中也是使用最多最常用到的。但是不少用户在使用PCM设备时会遇到各种故障&#xff0c;那么&#xff0c;我们该如何解决呢&#xff1f;接下来就由飞畅科技的小编来为大家介绍下E1 PCM复用设备常见故障及处理方法。 …

E1 PCM复用设备作用

Pulse Code Modulation&#xff08;PCM&#xff09;&#xff0c;中文称脉码调制或PCM复用设备&#xff0c;PCM复用设备的目的就是使交换机之间一条中继线不是只传送一条电话信号。 PCM复用设备也就是将语音&#xff0c;数据信号复接成2M信号的设备&#xff0c;直白一点就是将如…

变色龙功能

在《神秘博士》中&#xff0c;卡梅利恩&#xff08;Kamelion&#xff09;角色是可以采取任何形式的机器人。 据称&#xff0c;他们使用的物理道具非常麻烦&#xff0c;只有其创建者才能理解&#xff0c;而该创建者并没有帮助纠正它。 因此&#xff0c;Chamelion功能... 考虑以…

PCM复用设备的安装和使用注意事项

PCM设备在通信系统中的是一种很常用的设备&#xff0c;但是不少用户在购买了PCM设备后&#xff0c;都不懂怎么去安装使用PCM复用设备。下面&#xff0c;飞畅科技的小编来为大家详细介绍下PCM复用设备的安装和使用注意事项&#xff0c;一起来看看吧&#xff01; PCM复用设备的安…

PCM复用设备功能介绍

PCM设备功能主要分为四大部分&#xff1a;接入与复用、时隙交叉、2M线路保护、接口测试功能。接下来就由飞畅科技的小编来为大家详细介绍下PCM复用设备的功能&#xff0c;一起来看看吧&#xff01; PCM复用功能&#xff1a; 用户业务接入与复用是PCM设备最基本的功能&#xff…

对象和索引流

我本来要写一篇关于如何将流与每个元素的索引混合的文章&#xff0c;但是Baeldung上的人们已经很好地涵盖了这个主题 &#xff01; 鉴于我是他们编辑团队的一员&#xff0c;我为他们/我们感到自豪。 有趣的是&#xff0c;特别是Streams中的Java函数式编程如何使我们脱离了一些…