junit5和junit4_JUnit 5 –设置

junit5和junit4

2015年11月, JUnit Lambda团队展示了他们的原型 。 此后,该项目更名为JUnit 5,并于2016年2月发布了Alpha版本。我们将在一系列简短文章中进行探讨:

  • 建立
  • 基本
  • 建筑
  • 条件
  • 注射

本节讨论JUnit 5的设置,以便您可以针对新API编写代码并在IDE或构建工具中运行测试。

总览

在新兴的《 JUnit 5用户指南》中可以找到您将在此处阅读的更多内容以及更多内容。 请注意,它基于Alpha版本,因此可能会发生变化。

确实,我们鼓励我们提出问题或提出请求,以便JUnit 5可以进一步改进。 请利用这个机会! 这是帮助JUnit帮助我们的机会。

如有必要,此帖子将得到更新。 我在这里显示的代码示例可以在Github上找到。

写作测试

junit5-api工件中包含用于编写测试的API。 编写测试只需要使用您喜欢的构建工具将其包含在项目中即可。

  • 群组ID :org.junit5
  • 工件ID :junit5-api
  • 版本 :5.0.0-ALPHA

要处理一些事情,让我们快速创建第一个测试 :

HelloWorldTest.java

package org.codefx.demo.junit5;import org.junit.gen5.api.Test;class HelloWorldTest {@Testvoid helloJUnit5() {System.out.println("Hello, JUnit 5.");}}

见妈,不公开! 酷吧? 我现在不会讨论它,但是下一篇文章将讨论这个(以及其他基础知识),所以请继续关注。

运行测试

随着JUnit 5的不断发展,缺乏对本机工具的支持。 但是有一些准备工作可以使一切正常运行。

JUnit 4运行器

甲测试运行称为JUnit5可以用来作为JUnit 4运行的一部分来运行新的测试。 您将在其自己的工件中找到它,您必须将其添加到项目中:

  • 群组ID :org.junit5
  • 工件ID :junit4-runner
  • 版本 :5.0.0-ALPHA

运行程序将调用实际运行JUnit 5测试的引擎。 引擎还具有自己的工件,您必须添加以下工件:

  • 群组ID :org.junit5
  • 工件ID :junit5-engine
  • 版本 :5.0.0-ALPHA

要运行项目中的所有测试,最简单的为它们创建测试套件的方法是:

package org.codefx.demo.junit5;import org.junit.gen5.junit4.runner.JUnit5;
import org.junit.gen5.junit4.runner.Packages;
import org.junit.runner.RunWith;@RunWith(JUnit5.class)
@Packages({ "org.codefx.demo.junit5" })
public class TestWithJUnit5 { }

注意,该类必须是常规的JUnit 4测试类,即,它必须遵守通用的命名约定,并且必须是公共的。 @ Packages-annotation将包解释为层次结构,因此它将在所有以org.codefx.demo.junit5为前缀的包中运行所有测试。 如果愿意,可以直接在JUnit 5测试类上使用相同的运行器。 在这种情况下,它们必须是公开的。

现在我们完成了! 您最喜欢的IDE和构建工具将愉快地运行带有@RunWith(JUnit5.class)注释的类,从而运行新的JUnit 5测试。

在真正的JUnit 5支持出现之前,某些功能可能无法使用,例如,IDE将无法运行单独的测试方法。 但是暂时我发现这是最简单,最独立于工具的解决方案。

生成工具支持

JUnit团队已经在努力实现对JUnit 5的构建工具支持,即不通过JUnit 4绕道而行。基本的Gradle插件和Maven Surefire提供程序已启动并正在运行。 计划将这两个项目在某个时候移交给各自的社区。

两者都有示例项目( Gradle和Maven )。 有关更多详细信息,请参阅用户指南 。

命令行的胜利!

如果这一切对您来说太花哨了,请尝试console console ,它可以让您直接从命令行运行测试。 要获取它,您可以下载此ZIP 。

不幸的是它不能开箱即用 。 我不得不将上述的junit5-api和junit5-engine工件放到lib中,然后在bin中的脚本中将类路径定义编辑为CLASSPATH = $ APP_HOME / lib / *,以使其工作。

忽略其他依赖项(例如,在其他测试库上),可以按以下方式使用它:

使用junit控制台

# run all tests
junit-console -p ${path_to_compiled_test_classes} -a
# run a specific test
junit-console-p ${path_to_compiled_test_classes}org.codefx.demo.junit5.HelloWorldTest
由Thomas Leth-Olsen根据CC-BY-SA 2.0发布

发布时间由托马斯LETH -奥尔森在CC-BY-SA 2.0

兼容性

您可能已经注意到,JUnit 5占用了一个新的名称空间:org.junit.gen5。 这意味着在同一项目中使用不同的JUnit版本时不会有冲突。

实际上,一个项目可以包含并运行来自不同版本的测试而不会出现问题,这允许缓慢迁移到JUnit5。我们在研究JUnit的新体系结构时将重新讨论该主题。

通过异常与JUnit通信的测试库,例如Hamcrest和AssertJ,将继续在新版本中工作。 查看完整版本的HelloWorldTest ,以获取使用Mockito和AssertJ的示例。

反射

对于我们的JUnit 5设置,我们在项目中包括了junit5-api,junit5-engine和junit4-runner,编写了第一个最小测试用例,并将其作为JUnit 4测试套件的一部分运行。

下一篇文章将探讨如何在JUnit 5中编写测试的基础知识。

翻译自: https://www.javacodegeeks.com/2016/02/junit-5-setup.html

junit5和junit4

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

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

相关文章

markdown 生成目录_github上如何为markdown文件生成目录

写在前面熟悉markdown都知道可以使用[TOC]自动生成markdown文件的标题目录,比如在typora,vscode(需要插件)等本地编辑器中,或者在CSDN等网页编辑器中,但是github却不支持[TOC]标签,至于为什么不支持感兴趣的可以深入搜…

【WebRTC---进阶篇】(五)mediasoup的信令系统

mediasoup demo分析 app 客户端部分 broadcasters 推拉流部分 server 服务端部分 config.js 相当于一个配置文件,获取一些基本配置信息。获取的信息来交给server.js。 server.js 先从config.js获取信息,然后启动HTTPS webSocket服务等,…

axure html尺寸,axure怎么确定尺寸

回答:您好如做的是室内设计的话,那么来说可能会些参数提供给您的(例如长宽高)如果没有参数的话,只要把比例做好就可以了。只要比例做好了,东西看起来就自然像。至于教程的话,一般录制教程前都会有做好准备的&#xff0…

java工程引入scala_引入ReactiveInflux:用于Scala和Java的无阻塞InfluxDB驱动程序,支持Apache Spark...

java工程引入scala我很高兴宣布Pygmalios开发的ReactiveInflux的第一个发行版。 InfluxDB错过了Scala和Java的非阻塞驱动程序。 不变性,可测试性和可扩展性是ReactiveInflux的关键功能。 加上对Apache Spark的支持,它是首选武器。 https://github.com/p…

exe打包工具哪个最好_为你的 Python 程序写个启动工具箱

到目前为止,公众号已经介绍了不少图形界面的软件,比如猜数游戏、PDF阅读器、贪吃蛇游戏、天气查询软件、PDF 阅读器等。为了方便他人使用,我们常把图形界面打包成 exe 文件。但是如果我们只是为了自己使用方便的话,我们有必要把程…

【WebRTC---进阶篇】(六)SELECT网络模型

select函数原型 int WSAAPI select(_In_ int nfds,_Inout_opt_ fd_set FAR * readfds,_Inout_opt_ fd_set FAR * writefds,_Inout_opt_ fd_set FAR * exceptfds,_In_opt_ const struct timeval FAR * timeout); 函数功能:监视多个文件描述符的状态变化,在IO中负责IO的第一步…

计算机管理没有打印机列队,在Windows清除打印队列如果打印机被卡住,也没有打印输出...

我相信自己已经勾起回忆一拉似曾相识 ,右侧的主题? 我们每个人,在一段时间或其他,都在打印过程中面临的问题,特别是给打印命令,并打印输出不休后等待。 无论是在家里还是办公室里,那就是我们所有…

gatling 使用_使用Gatling + Gradle + Jenkins Pipeline为您的JAX-RS(和JavaEE)应用程序进行连续压力测试...

gatling 使用在这篇文章中,我将解释如何使用Gatling项目为您的JAX-RS Java EE端点编写压力测试,以及如何将它们与Gradle和Jenkins Pipeline集成,因此,除了进行简单的压力测试外,您还可以使用以下方法: 连续…

【开源项目】Socket服务端与客户端传输视频文件

TCP Server端 #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARNINGS#include<windows.h> #include<WinSock2.h> #include<stdio.h> #include <malloc.h>#pragma comment(lib,"ws2_32.lib")int main() {//启动Windows sock…

java comparator_【面试题】Java必考面试题全集(15)

Java基础面试题(15)1&#xff1a;Comparator 与Comparable 有什么不同&#xff1f;2&#xff1a;Object中有哪些方法&#xff1f;3&#xff1a;说下jdk8中的一些新特性4&#xff1a;在64 位 JVM 中&#xff0c;int 的长度是多数&#xff1f;5&#xff1a;java每改一点都需要重新…

px是什么意思计算机二级,px是什么意思?照片中的px是什么的缩写?

px是什么意思?px(Pixel&#xff0c;像素)是可以在数字显示设备上显示和表示的数字图像或图形的最小单位。像素是数字图形中的基本逻辑单元。将像素组合在一起以在计算机显示器上形成完整的图像&#xff0c;视频&#xff0c;文本或任何可见的东西。像素也称为图像元素。若把影像…

【OpenGL从入门到精通(一)】Windows搭建OpenGL的渲染环境,并初始化一个OPenGL窗口

注意&#xff1a;需要在Windows 窗口程序下&#xff0c;而不能是控制台程序&#xff0c;Windows平台的VS下已经包含了OpenGL相关的API&#xff0c;可以直接引用 #include <windows.h> #include<gl/GL.h> #include<gl/GLU.h>#pragma comment(lib,"openg…

java 交替_Java 8:使用交替接口公开的类型安全地图生成器

java 交替动态展示您的课程 当我还是Java新手时&#xff0c;我记得当时以为应该有一种方法可以删除或隐藏我不想公开的类中的方法。 就像用private方法或类似方法覆盖public方法一样&#xff08;哪种情况是不可能的&#xff0c;也不应该是不可能的&#xff09;。 显然&#xff…

ieee期刊_论文绘图神器来了:一行代码绘制不同期刊格式图表,哈佛博士后开源...

贾浩楠 发自 凹非寺量子位 报道 | 公众号 QbitAI「一篇论文投多个期刊&#xff0c;每个期刊对图表格式要求不一&#xff0c;同一组数据要用多种工具分别绘图。」不光是你&#xff0c;哈佛大学天文研究所的博士后&#xff0c;也不堪忍受论文重复绘图之苦。他的解决办法是&#x…

微课与计算机技术的论文,微课在高校计算机教学的运用论文

微课在高校计算机教学的运用论文摘要&#xff1a;现代信息社会不断发展进步&#xff0c;高校计算机教学也面临着复杂的形势&#xff0c;为全面提高计算机教学质量&#xff0c;提升学生的专业素质及综合能力&#xff0c;应当微课加以科学化应用。本文基于微课的内涵及应用意义出…

【OpenGL从入门到精通(二)】绘制一个点

1.想要绘制一个点&#xff0c;首先要在OpenGL初始化中先设置矩阵 2.然后在绘制场景中进行点的绘制。其中包括 当前颜色设置&#xff1b;点的位置&#xff0c;点的大小等等 #include <windows.h> #include<gl/GL.h> #include<gl/GLU.h>#pragma comment(lib,…

spring 启动加载数据_12个很棒的Spring数据教程来启动您的数据项目

spring 启动加载数据Spring Data的任务是为数据访问提供一个熟悉且一致的&#xff0c;基于Spring的编程模型&#xff0c;同时仍保留基础数据存储的特​​殊特征。 它使使用数据访问技术&#xff0c;关系和非关系数据库&#xff0c;map-reduce框架以及基于云的数据服务变得容易…

concurrenthashmap_ConcurrentHashMap是如何保证线程安全的

文章已同步发表于微信公众号JasonGaoH&#xff0c;ConcurrentHashMap是如何保证线程安全的之前分析过HashMap的一些实现细节&#xff0c;关于HashMap你需要知道的一些细节, 今天我们从源码角度来看看ConcurrentHashMap是如何实现线程安全的&#xff0c;其实网上这类文章分析特别…

计算机系统计算机,计算机系统与计算机化系统的区别

2010版GMP正文中提到“计算机”的地方一共三处&#xff0c;两处用的是计算机化&#xff0c;一处用的是“计算机”。在GMP的术语条款&#xff0c;则只提到了“计算机化系统”&#xff0c;2015年12月生效的GMP附录中的表述也是“计算机化系统”。那么“计算机系统”与“计算机化系…

【OpenGL从入门到精通(三)】第一个点的理论

OpenGL状态机 一&#xff0c;OpenGL是一个状态机matrix中包括&#xff1a; model view (模型矩阵) worldpos(世界坐标,也称为顶点坐标)通过mv(模型矩阵)转到cameru摄像机下&#xff08;根据右手坐标系&#xff0c;只有在Z的负方向才可以看得见&#xff09; projection …