返回顶部
首页 > 资讯 > 精选 >JUnit4中如何扩展Runner
  • 863
分享到

JUnit4中如何扩展Runner

2023-06-17 11:06:37 863人浏览 薄情痞子
摘要

JUnit4中如何扩展Runner,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在使用JUnit的过程中,大家可能会对JUnit进行一些扩展。本文中的示例为JUnit4定义

JUnit4中如何扩展Runner,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在使用JUnit的过程中,大家可能会对JUnit进行一些扩展。本文中的示例为JUnit4定义了一个新的Annotation,并相应地对已有的Runner进行扩展,使其能够解析新引入的Annotation。

臆造一个示例,会在执行单元测试方法之前,自动地为单元测试方法打印日志。该示例会为JUnit定义一个新的Annotation用于指定要打印的日志内容,并对JUnit默认提供的Runner实现BlockJUnit4ClassRunner进行扩展,使其能够识别这个新的Annotation。

1. 定义Annotation

TestLogger是一个作用于方法的Annotation,它只有一个属性,用于指定日志的内容,其代码如下所示,

@Target({ ElementType.METHOD })  @Retention(RetentionPolicy.RUNTIME)  public @interface TestLogger {  public String log() default "";  }

2. 扩展Runner

JUnit提供了若干个Runner的实现,如BlockJUnit4ClassRunner,Suite,其中BlockJUnit4ClassRunner用来执行单个测试用例类。LoggedRunner将扩展BlockJUnit4ClassRunner,覆写其中的methodBlock()方法。新的methodBlock()方法会在一开始试图获取被执行测试方法中的TestLogger Annotation,如果存在的话,就会打印出指定的日志,每行日志以当时的执行时间与完整方法名作为前缀。该类的代码如下所示,

public class LoggedRunner extends BlockJUnit4ClassRunner {   private static final DateFORMat format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss_SSS");   public LoggedRunner(Class<?> klass) throws InitializationError {  super(klass);  }   @Override protected Statement methodBlock(FrameworkMethod method) {  Method claSSMethod = method.getMethod();  TestLogger loggerAnnotation = classMethod.getAnnotation(TestLogger.class);  if (loggerAnnotation != null) {  StringBuilder log = new StringBuilder(format.format(new Date()));  log.append(" ").append(classMethod.getDeclarinGClass().getName())  .append("#").append(classMethod.getName()).append(": ")  .append(loggerAnnotation.log());  System.out.println(log.toString());  }  return super.methodBlock(method);  }  }

3. 应用程序

Calculator是一个简单的应用程序,其中定义了一个除法方法,代码如下所示,

public class Calculator {  public int divide(int a, int b) {  return a / b;  }  }

4. 单元测试程序

CalculatorTest是一个简单的单元测试程序,它会使用两种方式对Calculator中的divide()方法进行单元测试。其代码如下所示,

@RunWith(LoggedRunner.class)  public class CalculatorTest {   private static Calculator calculator = null;   @BeforeClass public static void createCalculator() {  calculator = new Calculator();  }   @Test @TestLogger(log = "a simple division.")  public void simpleDivide() {  int value = calculator.divide(8, 2);  Assert.assertTrue(value == 4);  }   @Test(expected = ArithmeticException.class)  @TestLogger(log = "divided by zero, and an ArithmeticException thrown.")  public void dividedByZero() {  calculator.divide(8, 0);  }  }

值得注意的是,CalculatorTest特别指定LoggedRunner作为测试执行器(@RunWith(LoggedRunner.class));同时,每个单元测试方法,simpleDivide()与dividedByZero(),都使用了Annotation TestLogger,为其指定日志内容。当执行上述单元测试时,会自动地打印出如下形式的日志内容:

2011-12-13_23:48:38_218 test.CalculatorTest#simpleDivide: a simple division2011-12-13_23:48:38_218 test.CalculatorTest#dividedByZero: divided by zero, and an ArithmeticException thrown.

5. 小结

通过对BlockJUnit4ClassRunner的扩展,可以让JUnit在运行测试用例时做一些额外的工作。但这种直接修改默认Test Runner的方式并不被提倡,在下一篇文章中将会介绍使用Test Rule来达到相同的扩展目的。

关于JUnit4中如何扩展Runner问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: JUnit4中如何扩展Runner

本文链接: https://lsjlt.com/news/288743.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JUnit4中如何扩展Runner
    JUnit4中如何扩展Runner,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在使用JUnit的过程中,大家可能会对JUnit进行一些扩展。本文中的示例为JUnit4定义...
    99+
    2023-06-17
  • php7中如何创建扩展
    这篇文章将为大家详细讲解有关php7中如何创建扩展,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。将实现如下功能:&lt;phpecho say();&gt;输出内容:$ ...
    99+
    2023-06-20
  • eclipse如何导入junit4
    要导入JUnit4到Eclipse中,可以按照以下步骤操作: 打开Eclipse,并打开你的Java项目。 右键单击项目名称...
    99+
    2023-10-22
    eclipse junit
  • 在phpstudy中安装php扩展,如apcu扩展等
    【APC是什么】 Alternative PHP Cache (APC)是一种对PHP有效的开放源高速缓冲储存器工具,他能够缓存opcode的php中间码。 【如何安装APC】 下载适合你php版本的...
    99+
    2023-09-10
    php apache 开发语言
  • Javascript中Array扩展如何使用
    这篇文章将为大家详细讲解有关Javascript中Array扩展如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Javascript中的Array扩展...
    99+
    2024-04-02
  • php中zip扩展如何安装
    这篇文章主要介绍php中zip扩展如何安装,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP...
    99+
    2023-06-15
  • php中如何安装calendar扩展
    小编给大家分享一下php中如何安装calendar扩展,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php的框架有哪些php的框架:1、Laravel,Larav...
    99+
    2023-06-15
  • 如何在php中安装扩展
    本篇文章给大家分享的是有关如何在php中安装扩展,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。...
    99+
    2023-06-14
  • php7中如何使用mysqli扩展
    今天就跟大家聊聊有关php7中如何使用mysqli扩展,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。因为php7安装目录中没有php.ini文件所以可以复制php.ini-devel...
    99+
    2023-06-20
  • PHP中DirectIO扩展如何使用
    本篇文章给大家分享的是有关PHP中DirectIO扩展如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。什么是Direct IODirect IO 其实是 Linux 操作...
    99+
    2023-06-20
  • php中如何安装grpc扩展
    小编给大家分享一下php中如何安装grpc扩展,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、在php.ini文件中添加grpc扩展配置:extension=g...
    99+
    2023-06-20
  • php7.2中如何安装fileinfo扩展
    这篇“php7.2中如何安装fileinfo扩展”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php7.2中如何安装file...
    99+
    2023-07-05
  • es6中扩展运算符如何用
    本篇内容介绍了“es6中扩展运算符如何用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Linux中php如何添加pcntl扩展
    这篇文章主要为大家展示了“Linux中php如何添加pcntl扩展”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中php如何添加pcntl扩展”这篇文...
    99+
    2024-04-02
  • 如何在php5.5中安装redis扩展
    如何在php5.5中安装redis扩展?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本根据PHP版本号,编...
    99+
    2023-06-15
  • 如何在 Rust中创建 PHP 扩展
    这期内容当中小编将会给大家带来有关如何在 Rust中创建 PHP 扩展,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。可以编译的Rust代码到一个库里面,并写为它一些C的头文件,在C中为被调用的PHP做一个...
    99+
    2023-06-17
  • LINQ中如何使用Where扩展
    本篇文章为大家展示了LINQ中如何使用Where扩展,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们除了可以如下方式书写带Where子句的LINQ外:from p&n...
    99+
    2023-06-17
  • LVM中如何对xfs进行扩展
    本篇内容介绍了“LVM中如何对xfs进行扩展”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. LVM基本术语物理卷 (physical v...
    99+
    2023-06-28
  • python如何扩展拆箱
    这篇文章主要介绍python如何扩展拆箱,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!扩展拆箱(只兼容python3)>>> a, *b,&nb...
    99+
    2024-04-02
  • 如何开启redis扩展
    开启redis扩展的示例:比如在宝塔上开启redis扩展。进入宝塔管理面板,打开软件管理 → 运行环境 → 打开PHP设置 → 安装redis扩展。找到/www/server/redis/中的“redis.conf”文件,打开编辑,找到“r...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作