• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

无信不立

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

【单元测试】junit5框架介绍

一、参考wiki

https://blog.csdn.net/pan_junbiao/article/details/104296855

https://www.cnblogs.com/zgq123456/p/12907757.html 

什么是Junit5 ?

先看来个公式:

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

这看上去比Junit4 复杂,实际上在导入包时也会复杂一些。

JUnit Platform是在JVM上启动测试框架的基础。

JUnit Jupiter是JUnit5扩展的新的编程模型和扩展模型,用来编写测试用例。Jupiter子项目为在平台上运行Jupiter的测试提供了一个TestEngine (测试引擎)。

JUnit Vintage提供了一个在平台上运行JUnit 3和JUnit 4的TestEngine 。

 

https://blog.csdn.net/hqq2023623/article/details/78464877  测试引擎的介绍

 

 

 

二、JUnit5的启动过程

1、启动过程示意

启动的main方法入口:com.intellij.rt.execution.junt.JunitStarter  这个类是idea程序的类入口。

到junit5框架的时候,已经是JunitStarter组装了使用junit5的代码。具体代码示意如下

public static void main(String[] args) {
        //设置搜索和过滤规则
        LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
                .selectors(
                        selectPackage("zj"),
                        selectClass(*MyTest.class)
                )
                .filters(
                        includeClassNamePatterns(".*Tests")
                )
                .build();
 
        Launcher launcher = LauncherFactory.create();
        // Register a listener of your choice
        //通过监听器来监听获取执行结果
        TestExecutionListener listener = new SummaryGeneratingListener();
        launcher.registerTestExecutionListeners(listener);
        launcher.execute(request);
    }
View Code

1. 构造LauncherDiscoveryRequest指定测试类的查找和过滤规则

2. 通过 LauncherFactory.create() 来获取Launcher默认实现

3. 通过添加TestExecutionListener来进行测试结果的监听

4. 执行launcher.execute(req)方法启动测试

简单来说就是扫描注定的文件夹或找到指定类名的类,经过Filter过滤后交给TestEngine去执行

 

2、启动过程涉及的类

org.junit.platform.engine.DiscoverySelector

负责定义哪些资源可以被TestEngine用来寻找测试类,比如指定java类名或者指定目录路径

org.junit.platform.engine.Filter

作为TestEngine的过滤器,过滤DiscoverySelector发现的资源

org.junit.platform.launcher.LauncherDiscoveryRequest

使用不同的Filter定义了Launcher和TestEngine以及测试类的过滤规则,使用DiscoverySelector发现测试类

TestEngine

作为发现和执行符合LauncherDiscoveryRequest规则的测试的主要组件,对不同的编程模型可以实现自己的TestEngine,比如JupiterTestEngine

TestEngine在创建Launcher的时候通过JAVA SPI发现具体实现,JUnit5中有两种实现 :JupiterTestEngine 和 VintageTestEngine

org.junit.platform.launcher.TestExecutionListener

定义了测试执行期间发生的事件类型,注册到Launcher的实现类将会在事件发生时得到通知

 

org.junit.platform.launcher.Launcher

org.junit.platform.launcher.DefaultLauncher

做为Launcher的默认实现,持有TestEngine和TestExecutionListener集合,它们通过JAVA SPI发现,负责执行TestEngine来启动测试

posted on 2020-10-22 15:11  无信不立  阅读(509)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3