junit动态忽略测试_有条件忽略测试的JUnit规则

junit动态忽略测试

我一直认为使用@Ignore停用测试是一个坏主意。 例外,这可能是一种将间歇性失败的测试放入隔离区以供以后处理的方法(如Martin Fowler 在此处所述 )。 随着越来越多的测试不断被忽略和遗忘,这带来了测试套件衰减的危险。 因此,您应该有一个政策来确保测试隔离时间不会太长。 好吧,所以直到最近我才想到:

在我和Frank共同致力于的项目中,我们遇到了此处描述的SWT问题。
在非Windows平台上,断言SWT小部件是否已获得输入焦点不适用于自动测试。

我们决定暂时忽略非Windows平台上与焦点相关的测试。 尽管我们的构建服务器在Linux上运行,但是我们发现这两个开发环境都在Windows上运行,因此它足够安全。

在JUnit中, 假设是跳过在给定条件下没有意义的测试的方法。 这样表示,我们的测试将如下所示:

public void testFocus() {assumeTrue( isRunningOnWindows() );// ...
}

但是我们根本不希望测试代码与条件混为一谈。 决定是否忽略测试的代码应与测试代码本身分开。

这导致我们创建了ConditionalIgnore批注和相应的规则,以将其挂钩到JUnit运行时中。 事情很简单,最好用一个例子来解释:

public class SomeTest {@Rulepublic ConditionalIgnoreRule rule = new ConditionalIgnoreRule();@Test@ConditionalIgnore( condition = NotRunningOnWindows.class )public void testFocus() {// ...}
}public class NotRunningOnWindows implements IgnoreCondition {public boolean isSatisfied() {return !System.getProperty( "os.name" ).startsWith( "Windows" );}
}

ConditionalIgnore批注需要一个“ condition”属性,该属性指向实现IgnoreContition的类。 在运行时,将创建IgnoreCondition实现的实例,并且其isSatisfied()方法确定是否忽略测试(返回true)(返回false)。 最后,有一个IgnoreConditionRule,它将注释链接到JUnit运行时中。

如果IgnoreCondition实现决定忽略测试用例,则抛出AssumptionViolatedException。 因此,ConditionalIgnore注释的效果与假定条件将返回false的效果相同。 略有不同,我们认为是一个优势:对于被忽略的测试,不会执行@Before和@After方法。

该规则及其相关类的源代码可以在这里找到。

假设的另一个问题是,它会影响测试统计信息。 如果发现Assume条件为假,则即使未运行测试,也将其视为通过测试。 为了克服这个问题,您必须提供自己的运行程序,以所需的方式处理AssumptionViolatedException。

即使我刚刚写了关于忽略长度测试的文章,但我仍然坚信最好不要忽略测试,只有在特殊情况下才应该忽略。

参考:来自Code Affine博客的JCG合作伙伴 Rudiger Herrmann的有条件忽略测试的JUnit规则 。

翻译自: https://www.javacodegeeks.com/2013/11/a-junit-rule-to-conditionally-ignore-tests.html

junit动态忽略测试

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

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

相关文章

【渝粤教育】广东开放大学 企业标准化 形成性考核 (49)

选择题 题目: 对接受评价部门/单位标准化子体系的建立和实施不能采用随机抽查样本的方式进行评价。 选择一项: 答案:看左侧 题目: 现场确认一般是采用随机抽查,填写记录表和评分表,并通过确认人员的______…

蓝桥杯基础模块4_3:矩阵按键

一、模块题目 二、原理简述 1、矩阵键盘的扫描思想(转载+删减) 与独立按键不同的是,按键的两个引脚都分别连接的单片机的I/O端口,一个作为行信号,另外一个作为列信号。下以4X4的矩阵键盘为例,探讨其工作方式和扫描思路。 要识别出黄色按键的按下状态,逐行扫描,然后读…

【渝粤教育】广东开放大学 刑法 形成性考核 (42)

选择题 题目:以下哪个不是我国刑法的法定原则? 题目:以下哪个管辖权是我国管辖权的基础? 题目:以下哪种情况不适用属地管辖? 题目:犯罪的最本质特征在于它是( )。 题目&a…

休息一下,或者:如何使用Java 12制作出色的拼图游戏

Java 12以实验形式提供了switch表达式以及switch和break语句的新形式。 对于可能很少用到的构造,有大量新语法和语义,当然,对于那些困惑者和认证考试问题的作者来说,这是一件了不起的礼物。 如果您喜欢Java难题,并且可…

蓝桥杯基础模块5:外部中断

一、模块题目 二、原理简述 (转载,删改) 1、什么是中断 你正在追电视剧《神雕侠侣》,正看得入迷的时候,电话响了,你暂停电视剧,去接电话,在接电话的过程中,门铃又响了,你暂时放下电话,去把门打开。如果追电视剧是在执行主程序,那么电话就是中断源,电话铃响了就是中…

【渝粤教育】广东开放大学 商务谈判 形成性考核 (34)

选择题 题目: 对明智的谈判者而言,应当在保持()的基础上,追求自己利益的最大化,在使对方通过谈判获得利益时,自己也获得相应的利益。 选择一项: 答案:看左侧 题目&#…

【渝粤教育】广东开放大学 数据结构 形成性考核 (30)

选择题 题目:链接存储的存储结构所占存储空间( ) 题目:线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。 题目:顺序表中第一个元素的存储地址是100,每个元…

蓝桥杯基础模块06_1:定时器计数器

一、模块题目 二、原理简述 (转载,删改) 1、定时器、计数器定义 在没有钟表的时候,定时的方式通过有一注香的时间,或者一桶水的时间。前者烧香不断减少是减法,后者滴水不断增加是加法。 定时/计数器&#…

structure101_使用structure101分析软件包的依赖关系

structure101稳定应用程序的一个关键是结构良好的代码库。 我们知道我们应该建立尽可能多的黑匣子,因为一旦完成一个黑匣子,我们就不必再考虑其内部了。 您只需要使用您或其他团队成员通过明确定义的界面编写的代码即可。 这使您可以专注于要添加的下一个…

【渝粤教育】广东开放大学 机械制造基础 形成性考核 (55)

选择题 题目:车削加工中大部分切削热传给了( ) 题目:下列诸因素中,哪个是造成45钢淬火硬度偏低的主要原因( ) 题目:切削用量中对切削力影响最大的因素是背吃刀量。 题目:焊接接头中的…

【渝粤教育】广东开放大学 电子商务(本) 形成性考核 (21)

选择题 题目:( )的域名含义是政府组织。 答案:看左侧 题目:( )是指包含巨量资料的信息资产? 答案:看左侧 题目:www.sina.com.cn的二级域名是( &…

蓝桥杯基础模块6_2:定时器进阶

一、模块题目 二、原理图 1、数码管

JDK 9 / JEP 280:字符串串联永远不会相同

JEP 280 (“ Indify String Concatenation”)是与JDK 9结合实现的,根据其“摘要”部分,“更改了javac生成的静态String -concatenation字节码序列,以使用对JDK库函数的invokedynamic调用。 ” 通过查看在JDK 9之前和JD…

【渝粤教育】广东开放大学 综合英语1 形成性考核 (36)

选择题 题目: I love traveling in the countryside, but I don’t like losing my way. I went on a trip recently, but my trip took me longer than I expected. “I’m going to Woodford Green,” I said to the conductor as I got on the bus, “b…

蓝桥杯基础模块7:PWM脉宽调制

一、 模块题目 二、 原理简述 脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。随着电子技术的发展,出现了多种脉冲宽度调制(Pulse width modulation,PWM)技术,其中包括:相电压控…

【渝粤教育】电大中专Office办公软件 (14)作业 题库

1学习好Office办公软件这门课程,应该()。 A重视理论学习 B重视上机操作,多练多试,还要学习好基础的知识 C只看不练 D可以随便学习一下 正确 正确答案:左边查询 学生答案:B 2在使用Office2016时遇…

蓝桥杯基础模块8_1:串口通信收发

一、模块题目 二、原理简述 1、串口重要概念概述 <1> 串行通信是指数据一位接一位地顺序发送或接收。 <2> 串行通信有SPI、IIC、UART等多种,最常见最通用的是指UART,无特殊说明,本文指的就是UART。 <3> 串行通信的制式有:单工、半双工、全双工三种。 &l…

【渝粤教育】电大中专中医基础知识 作业 题库

1.“证”是指 A.疾病的体征与症状 B.对疾病的症状与体征的分析 C.对疾病某一阶段的病理概括 D.对疾病全过程规律的认识 E.对疾病的症状与体征的调查 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.中医学认识疾病和治疗疾病的基本思路是 A.恒动观念 B.同病异…

从JDK 12删除原始字符串文字

已经提出从JDK 12 &#xff08;它将在12月13日进入Rampdown第一阶段 &#xff09;中删除原始字符串文字&#xff08;预览 &#xff09;。 Brian Goetz撰写了删除此预览功能的动机的详细描述 &#xff08; JEP 326 &#xff09;。 在Java subreddit上也对此进行了讨论。 在帖子“…

【渝粤教育】电大中专公共基础课程_1作业 题库

1中央广播电视中等专业学校是一所依托&#xff08;&#xff09;设置的运用现代化教学手段和多媒体教学开展中等专业学历教育的开放性学校。 A国家开放大学 B技工学院 C技能培训学校 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2并面向社会直接招收初中毕业生和在…