提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:郑恭琳|2020-05-19 11:17:50.563|阅读 232 次
概述:自JUnit 5发行以来已经有几年了。如果您尚未开始将其用于开发测试,则应该这样做。 JUnit 5具有许多新功能和改进功能,可以节省您的时间和麻烦。让我们看一下如何开始使用JUnit 5以获得最新技术的好处。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
自JUnit 5发行以来已经有几年了。如果您尚未开始将其用于开发测试,则应该这样做。 JUnit 5具有许多新功能和改进功能,可以节省您的时间和麻烦。让我们看一下如何开始使用JUnit 5以获得最新技术的好处。
如果您使用JUnit 4已有一段时间,那么迁移测试似乎是一项艰巨的任务。好消息是您可能不需要转换任何测试——JUnit 5可以使用Vintage库运行JUnit 4测试,因此您可以开始使用JUnit 5编写新的测试。
这是开始使用JUnit 5的四个基本理由:
即使您已有现有的JUnit 4测试,从JUnit 4切换到JUnit 5也非常简单。除非需要新功能,否则大多数组织不需要将旧的JUnit转换为JUnit 5。
JUnit 5测试看起来与JUnit 4几乎相同,但是您应该注意一些差异。
输入
JUnit 5将新的org.JUnit.jupiter包用于其注释和类。例如,org.JUnit.Test成为org.JUnit.jupiter.api.Test。
注解
@Test注释不再具有参数;这些都已移至某个功能。例如,要指示期望测试在JUnit 4中引发异常:
在JUnit 5中,它已更改为:
同样,超时也已更改。在JUnit 4中,它们如下所示:
在JUnit 5中,超时如下所示:
以下是其他已更改的注释:
断言类
JUnit 5断言类现在位于org.JUnit.jupiter.api.Assertions中。大多数常见的断言类,例如assertEquals()和assertNotNull()看起来都与以前相同,但是有一些关键的区别:
请注意,如果愿意,您可以在JUnit 5测试中继续使用来自JUnit 4的断言。
假设条件
假设已移至org.JUnit.jupiter.api.Assumptions。
存在相同的假设,但现在支持BooleanSupplier以及Hamcrest匹配器以匹配条件。满足条件时,可以使用Lambda(类型为Executable)来执行代码。
这是JUnit 4中的示例:
在JUnit 5中,它变为:
在JUnit 4中,自定义框架通常意味着使用@RunWith批注指定自定义运行器。使用多个运行程序是有问题的,通常需要链接或使用@Rule。使用扩展在JUnit 5中对此进行了简化和改进。
例如,在JUnit 4中使用Spring框架构建测试如下所示:
使用JUnit 5,您可以改为包含Spring Extension:
@ExtendWith注释是可重复的,这意味着可以轻松组合多个扩展名。
您还可以通过创建一个实现org.JUnit.jupiter.api.extension中的一个或多个接口的类,然后使用@ExtendWith将其添加到我们的测试中,来轻松定义我们自己的自定义扩展。
要将现有的JUnit 3或JUnit 4测试转换为JUnit 5,以下步骤应适用于大多数测试:
请注意,迁移参数化测试将需要更多的重构,尤其是如果您一直在使用JUnit 4参数化(JUnit 5参数化测试的格式更接近JUnitParams)。
到目前为止,我仅讨论了现有功能及其更改方式。但是JUnit 5提供了许多新功能,使我们的测试更具描述性和可维护性。
显示名称
使用JUnit 5,可以将@DisplayName批注添加到类和方法。生成报告时使用该名称,这使描述测试的目的以及跟踪故障更加容易,例如:
您还可以使用显示名称生成器来处理您的测试类和/或方法以生成您喜欢的任何格式的测试名称。有关详细信息和示例,请参见JUnit文档。
断言
JUnit 5引入了一些新的断言,例如:
嵌套测试
JUnit 4中的测试套件很有用,但是JUnit 5中的嵌套测试更易于设置和维护,它们可以更好地描述测试组之间的关系,例如:
在上面的示例中,您可以看到我对与MyClass相关的所有测试使用了单个类。我可以验证该类在外部测试类中是否可实例化,并且我对所有实例化和初始化MyClass的测试使用嵌套的内部类。@BeforeEach方法仅适用于嵌套类中的测试。
测试和类的@DisplayNames批注指示测试的目的和组织。这有助于了解测试报告,因为您可以看到执行测试的条件(使用初始化验证MyClass)以及测试正在验证的内容(myMethod返回true)。这是用于JUnit 5的良好测试设计模式。
参数化测试
JUnit 4中使用内置库(例如JUnit4Parameterized)或第三方库(例如JUnitParams)进行测试参数化。在JUnit 5中,参数化测试是完全内置的,并采用了JUnit4Parameterized和JUnitParams的一些最佳功能,例如:
格式类似于JUnitParams,其中参数直接传递到测试方法。请注意,要测试的值可以来自几个不同的来源。在这里,我只有一个参数,因此使用@ValueSource很容易。@EmptySource和@NullSource表示我想分别向运行的值列表添加一个空字符串和一个null(如果同时使用它们,则可以如上所述将它们组合在一起)。还有多个其他值源,例如@EnumSource和@ArgumentsSource(自定义值提供程序)。如果需要多个参数,则也可以使用@MethodSource或@CsvSource。有关更多详细信息和示例,请参见JUnit 5文档。
JUnit 5中添加的另一种测试类型是@RepeatedTest,其中将单个测试重复指定的次数。
有条件的测试执行
JUnit 5提供了ExecutionCondition扩展API,以有条件地启用或禁用测试或容器(测试类)。这就像在测试中使用@Disabled一样,但是它可以定义自定义条件。有多个内置条件,例如:
测试模板
测试模板不是常规测试。它们定义了一组要执行的步骤,然后可以使用特定的调用上下文在其他位置执行这些步骤。这意味着您可以一次定义一个测试模板,然后在运行时构建一个调用上下文列表以运行该测试。在Junit 5文档中找到更多详细信息和示例。
动态测试
动态测试就像测试模板一样,要运行的测试是在运行时生成的。但是,虽然测试模板是通过一组特定的步骤定义的并且可以多次运行,但是动态测试使用相同的调用上下文,但是可以执行不同的逻辑。动态测试的一种用途是流式传输抽象对象列表,并根据其具体类型对每个对象执行一组独立的断言。有关良好的示例,请参见Junit 5文档。
JUnit 5是对JUnit框架的强大而灵活的更新。它提供了各种改进和新功能来组织和描述测试用例,并有助于理解测试结果。更新JUnit 5既快速又容易——只需更新项目依赖项并开始使用新功能。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢