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动态忽略测试

junit动态忽略测试_有条件忽略测试的JUnit规则相关推荐

  1. 数据迁移测试_自动化数据迁移测试

    数据迁移测试 Data migrations are notoriously difficult to test. They take a long time to run on large data ...

  2. 网线传输速度测试_网络带宽和速度测试windows和linux用iperf工具

    Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性.Iperf可以报告带宽,延迟抖动和数据包丢失.利用Iperf这一 ...

  3. 快照测试_什么是快照测试,并且在PHP中可行?

    快照测试 This article was peer reviewed by Matt Trask, Paul M. Jones, and Yazid Hanifi. Thanks to all of ...

  4. 远程桌面服务怎么测试_快速的远程服务测试

    远程桌面服务怎么测试 测试与远程服务交互的代码通常非常困难. 有很多折衷因素会影响您可以编写哪些测试以及要编写的测试数量. 在大多数情况下,您对从服务中获取的数据的控制为零,这使得断言至少很难说. 不 ...

  5. 端到端测试_端到端测试的滥用–测试技术2

    端到端测试 我的上一个博客是有关测试代码方法的一系列博客中的第一篇,概述了使用一种非常常见的模式从数据库检索地址的简单方案: -并描述了一种非常通用的测试技术: 不编写测试 , 而是手动进行所有操作. ...

  6. react jest测试_如何使用React测试库和Jest开始测试React应用

    react jest测试 Testing is often seen as a tedious process. It's extra code you have to write, and in s ...

  7. 串行测试 并行测试_什么是并行测试,为什么要采用它?

    串行测试 并行测试 随着技术的进步,随着组织从手动测试转向Selenium测试自动化 ,测试解决方案变得比以往更具可扩展性. 但是,大多数组织仍在努力的领域之一是可并行运行多个测试的可伸缩性. 许多公 ...

  8. 突变测试_什么是突变测试?

    突变测试 最近,我反复提到"突变测试"一词. 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白,所以我花了一些时间来追赶这个话题,然后尝试一下. 这篇文章总结了我 ...

  9. 读书笔记_探索式测试_混合探索式测试

    一.测试场景 1.讲述用户故事 2.描述需求 3.演示产品功能 4.演示集成场景 5.描述设置和安装 6.描述警告和出错情况 二.使用基于场景的探索式测试 1.通过场景操作引入变化:操作后得到的新场景 ...

最新文章

  1. 如何通过HBuilderX运行微信小程序,启动Enable IDE Service,X initialize 解决方案
  2. ActiveReports 报表应用教程 (2)---清单类报表
  3. 系统新模块增加需要哪些步骤_想要吸引人流,儿童乐园需要增加哪些新设备呢...
  4. 华为关于gvrp 的配置,一般步骤以及应用。
  5. 计算机知识技能答案,学生计算机知识技能竞参考题范围及答案.doc
  6. 【服务器】【私人书库】宝塔安装calibre-web
  7. 用C语言实现字符串的右旋
  8. 多屏系统上播放幻灯片的设想
  9. python脚本-自动检测Base16、32、64、85系列编码、多层解码(新增base91解码)
  10. java计算机毕业设计校园环境保护监督系统源代码+系统+数据库+lw文档
  11. 内存管理技术——离散分配方式
  12. Scratch软件编程等级考试一级——20210320
  13. 关闭计算机休眠文件,电脑垃圾清理关闭休眠文件夹hiberfil.sys
  14. Python|几十行代码带你简单实现模拟浏览器操作
  15. STL快速入门学习教程之map的简单使用
  16. Motorola RSD Lite刷机详细图文教程
  17. eclipse不提示js怎么办
  18. maya 白天室内灯光_求解maya室内灯光怎么打
  19. debian、ubuntu:使用apt包管理器可能存在的问题! 让新手望而却步!
  20. windows无法访问指定设备 路径或文件(100%解决)

热门文章

  1. 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作
  2. art-template入门(六)之解析规则
  3. Java 反射机制深入研究
  4. 3种常见的Class级别的错误
  5. 一篇文章搞定面试中的二叉树
  6. 银行营业网点管理系统——dao包(BranchesDao)
  7. Redis(案例四:购物车实现案例-Hash数据)
  8. 微内核操作系统能做服务器系统吗,科普:微内核操作系统现状
  9. 阳泉2021高考成绩查询时间段,2021年阳泉高考成绩排名及成绩公布时间什么时候出来...
  10. 转:json与map互转