佛山市研发网站建设哪家好佛山做网站永网

web/2025/10/9 0:15:55/文章来源:
佛山市研发网站建设哪家好,佛山做网站永网,中智软件开发有限公司,营销型网站建设核心要素junit数据驱动测试在本文中#xff0c;我们将看到如何使用Junit进行数据驱动的测试。 为此#xff0c;我将使用一个名为EasyTest的库。 我们知道#xff0c;对于TestNG#xff0c;它已内置了数据提供程序。 通过简单的测试#xff0c;我们可以使用Junit进行数据驱动的测试… junit数据驱动测试 在本文中我们将看到如何使用Junit进行数据驱动的测试。 为此我将使用一个名为EasyTest的库。 我们知道对于TestNG它已内置了数据提供程序。 通过简单的测试我们可以使用Junit进行数据驱动的测试。 什么是数据驱动测试 当测试由数据驱动时则指的是数据驱动的测试。 正式定义可以在Wiki中找到。 总之将对您的输入数据预期输出配置等进行参数化定义。 因此最后您不需要更改测试但是随着数据的更改您可以增加测试数量和覆盖范围。 这意味着您的数据将驱动您的测试能力以及质量。 当您需要处理具有不同排列和组合的大量数据时这是一种非常好的方法。 我在哪里使用这种方法 1.当我需要检查大量数据并将其针对数据库查询或Web api方法REST / SOAP输出时。 2.当我需要使用不同的数据组合来驱动相同的UI测试时。 3.当我需要将日期更改行为与配置更改隔离开来时。 我们将如何实现 我们将通过参数化测试解决此问题。 并且此参数将从我们定义的文件中获取值测试数据。 这是TestNG与Junit一起缺少的部分。 我们将使用EasyTest库解决。 注意这不是我们使用Easy test的唯一原因。 简易测试还具有许多令人印象深刻的功能。 我们将一一看到。 这是github中的简单测试项目链接。 让我们学习Example 为了学习我正在使用简单的计算器类 Github链接 。 只需将两个数字相加即可得到Double类型的结果。 public class Calculator {public Double add(Double a, Double b){return ab;} } 并且让我们在没有Easy Test的情况下创建一个测试用例。 public class SimpleTest extends DataDrivenTest{Test public void testAddition(){Assert.assertEquals(25.5,calculator.add(10.5,15.0),0.01);} } 我们将使用Easy Test来开发这个简单的测试用例因此让我们开始制作一个项目。 步骤A创建Maven项目 1.使用您最喜欢的组ID和工件ID创建一个Maven项目。 我使用org.automation和数据驱动 2.包括以下依赖项。 对于Junit我们正在使用 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version /dependency 轻松测试 dependencygroupIdorg.easetech/groupIdartifactIdeasytest-core/artifactIdversion1.4.0/version /dependency 并且用于日志记录这是可选的 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.21/version /dependency dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.21/version /dependency[这足以使用简单的测试内部日志记录。 ] 现在要提供数据参数我们需要包括数据文件。 作为最佳实践我会将所有数据都用作资源 。 因此我需要在pom中包含资源。 因此最终项目pom.xml看起来像这样 。 ?xml version1.0 encodingUTF-8?project xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://maven.apache.org/POM/4.0.0 xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.automation/groupIdartifactIddatadriven/artifactIdversion1.0-SNAPSHOT/versiondependencies!--Only mandatory part : start--dependencygroupIdorg.easetech/groupIdartifactIdeasytest-core/artifactIdversion1.4.0/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency!--Only mandatory part: End --dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.21/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.21/version/dependency/dependenciesbuildresourcesresourcedirectorysrc/test/resources/directoryincludesinclude**/*/include/includes/resource/resources/build /project 步骤B创建数据文件简易测试支持 1. ExcelOffice 97/2003格式xls扩展名 2. CSV逗号分隔值 3. XML 4.通过CSV文件的JSON格式。 注意Easy test还支持自定义数据类型我们将跳过此部分以使其在Blog中变得简单您可以在Github中查看示例 对于CSV和EXCEL请遵循以下规则 1.第一行第一列为方法名称因此此列的每一行将为空白 2.第一行从第二列开始所有将均为参数变量名称。 3.写入方法名称的列的所有行均为空白。 CSV Excel.xls XML 您可以在github中看到我所有的文件。 现在让我们从其他数据加载器加载数据。 要加载数据通常我们使用注释 1. DataLoader定义文件源。 2. Param定义将哪些列数据视为要获取的项目。 由于此批注特定于Easy Test因此我们需要使用DataDrivenTestRunner.class来运行此测试类该驱动程序由 因此首先我们看到CSV数据加载器。 RunWith(DataDrivenTestRunner.class) public class CSVLoaderExample extends DataDrivenTest {Test DataLoader(filePaths calculator.csv, loaderType LoaderType.CSV)public String testAddFromCSV(Param(name a) Double a,Param(name b) Double b,Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);return success;}Test DataLoader(filePaths calculator2.csv)public void testAdd(Param(name a) Double a, Param(name b)Double b, Param(name expected)Double expected){Assert.assertEquals(expected, calculator.add(a,b),0.1);} } 在这里您可以看到我是 使用DataDrivenTestRunner.class运行测试 正在加载calculator.csv还有另外一个 获取名称为ab的参数。 这是CSV文件的内容看起来像 testAddFromCSV,a,b,expected,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,15.0,25.0,40,900.0,250.0,1150.0 现在您可能会问如何处理行。 轻松测试将每一行视为一条记录它将根据数据文件中存在的行数来迭代我们的测试。 因此为输入数据定义列已绰绰有余。 最佳实践我过去一直遵循一个文件来提供输入数据以及预期的输出。 您可以为此使用单独的文件。 同样如果我们查看excel数据加载器 RunWith(DataDrivenTestRunner.class) public class ExcelLoaderExample extends DataDrivenTest {Test DataLoader(filePaths calculator.xls, loaderType LoaderType.EXCEL)public void testAddFromExcel(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);}Test DataLoader(filePaths {calculator2.xls})public void testAdd(Param(name a) Double a, Param(name b)Double b, Param(name expected)Double expected){Assert.assertEquals(expected, calculator.add(a,b),0.1);}} 和XML数据加载器 RunWith(DataDrivenTestRunner.class) public class XMLLoaderExample extends DataDrivenTest {Test DataLoader(filePaths calculator2.xml, loaderType LoaderType.XML)public String testAddXMLOutput(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);return success;} } 注意 1.文件路径包含物理路径如果文件在类路径中则文件名就足够了。 因此当我定义pom.xml资源时我们应该包括我们的数据文件以使其像这样工作。 或者我们保持正确的输入路径。 2.如果使用单个文件加载则可以避免使用LoaderType参数。 3.使用多个相同类型的文件加载时请确保没有相同的列名。 如果相同则将保留第二个或更高版本文件的列。 Lifo方式将保留最后一个文件 4.在同一方法中不支持不同类型的加载器。 因此您无法使用单个数据加载器以相同的方法加载ExcelCSV。 只有第一个会工作。 5.单个方法/类不支持多个数据加载器注释。 6.方法级数据加载器将重载类级数据加载器。 7.将单个文件用于多个测试方法的参数时请使用类级别的数据加载器。 8.在参数中使用的数据以长字符串双精度格式收敛。 但是我们可以将自定义数据类型与我们自己的解析器一起使用。 简易测试对此具有接口。 使用AbstractConverter YourDataType 9.如果需要自定义显示的参数数据则在加载程序时可以使用Display批注。 你可以在这里看到一个例子 。 以下是多个数据加载器的一些示例 RunWith(DataDrivenTestRunner.class) public class MultipleDataLoaderExample extends DataDrivenTest {// only the first loader will be working.. // in here calculator2.csv Test DataLoader(filePaths {calculator2.csv,calculator3.xml})public void testAdd(Param(name a) Double a, Param(name b)Double b, Param(name expected)Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);} }RunWith(DataDrivenTestRunner.class) public class MultipleDataLoaderExampleSameType extends DataDrivenTest{Test DataLoader(filePaths {calculator3.csv,calculator2.csv})//calculator2 is accepted not 2 why, it honors the last item, top item of the array list of files public void testAdd(Param(name a) Double a, Param(name b)Double b, Param(name expected)Double expected){Assert.assertEquals(expected, calculator.add(a,b),0.1);}} 因此您可能会在这里看到更多详细的示例。 现在除了“数据加载”之外“简易测试”还具有许多其他功能。 我没有详细说明但每个示例都有示例。 因此我在逐一解释的基础上加了一点。 报告简单的测试提供了非常简单的报告……:)。 只需使用注释即可。 这里有一些例子。 默认报告输入PDF并存储在用户目录中 RunWith(DataDrivenTestRunner.class) Reportpublic class DefaultReportExample extends DataDrivenTest{Test DataLoader(filePaths calculator2.xls)public void testAdd(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);}} 在类路径中更改类路径的报告报告存储在构建目录中maven中的目标文件夹中。 将创建一个文件夹名称TestReports RunWith(DataDrivenTestRunner.class) Report(outputLocation classpath:TestReports) public class ClassPathExampleReport extends DataDrivenTest{Test DataLoader(filePaths calculator.xls)public void testAddFromExcel(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);}Test DataLoader(filePaths calculator2.xls)public void testAdd(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);} } 在文件夹路径中更改类路径的报告我们在文件系统中指定 RunWith(DataDrivenTestRunner.class) Report(outputLocation file:TestReports)// default location project working directorypublic class CustomPathExampleReport extends DataDrivenTest{Test DataLoader(filePaths calculator.xls)public void testAddFromExcel(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);}Test DataLoader(filePaths calculator2.xls)public void testAdd(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);} } 在github仓库中我给出了更多易于理解的示例。 以下是重要注意事项。 1.报告功能测试报告和性能测试报告有两种类型包括运行测试的时间。 我们可以创建多个报告类型。 2.报告制作速度慢因此报告制作时间将包含在测试执行时间中 3.报告文件格式有3种类型。 ExcelPDF和HTML其中pdf是默认选择。 我们可以创建多种报告类型格式。 4. Report可以在类级别使用这意味着在生成时它包括所有测试方法结果。 5.报表位置可以存储特定的文件路径或构建目录中的类路径。 当我们使用mvn clean时将清除类路径报告因此请谨慎选择。 pdf报告样本 并行线程简便测试具有一个简单的Parallel批注在其中我们可以定义JVM将分配多少线程来测试一个测试类。 Parallel(threads 5)//this is very fragilepublic class ParallelTestExample extends DataDrivenTest_withDefaultAnnotation {Test DataLoader(filePaths calculator.xls, loaderType LoaderType.EXCEL)public void testAddFromExcel(Param(name a) Double a, Param(name b)Double b, Param(name expected)Double expected){Assert.assertEquals(expected, calculator.add(a,b),0.1);}} 您可以看到此测试将使用5个线程运行。 我们可以并行运行测试服也可以并行运行 RunWith(Suite.class) ParallelSuite(threads 3) Suite.SuiteClasses({RepeatExample.class, TestWithPolicyExample.class}) public class ParallelSuitExample { } 注意这非常易碎。 它可能会导致资源分配错误。 而简单的测试并不能确保这些并发。 测试重复在Easy Test中我们可以使用注解Repeat重复测试方法。 RunWith(DataDrivenTestRunner.class) TestPolicy(PolicyExample.class) public class RepeatExample extends DataDrivenTest {Test Repeat(times 5)public void testAddFromExcel(Param(name a) Double a,Param(name b) Double b,Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);} } 它是串行运行的而不是并行运行的。 测试属性简易测试具有一个不错的注解TestProperties可用于直接从类路径中注入测试属性。 public class TestPropertiesExample extends DataDrivenTest_withDefaultAnnotation {TestProperties(value {test.properties})private Properties myProps;Test public void testAddition() {Assert.assertEquals(Easy Test Demos, myProps.getProperty(test.title));} }[忽略延伸部分不需要。 为了保持良好的测试我用过。 您可以看到表格github来源。 ] 测试策略测试策略在Easy测试中非常有用我们可以在单独的类中定义测试策略并在测试类中使用它。 为此定义一个策略类。 IgnoreParallel(threads 2) Report(reportTypes {Report.REPORT_TYPE.DEFAULT,Report.REPORT_TYPE.METHOD_DURATION},outputFormats Report.EXPORT_FORMAT.PDF,outputLocation file:TestReports) DataLoader(filePaths calculator.xls)// i preffer data loder should be with methodDisplay(fields id) public class PolicyExample { } 并在测试课程中使用 RunWith(DataDrivenTestRunner.class) TestPolicy(PolicyExample.class) public class TestWithPolicyExample extends DataDrivenTest {Test public void testAddFromExcel(Param(name a) Double a, Param(name b) Double b, Param(name expected) Double expected) {Assert.assertEquals(expected, calculator.add(a, b), 0.1);} } 因此我们可以看到该策略将为线程定义数据文件报告和并行线程。 在哪里使用 在测试过程中如果我们认为需要单独进行测试配置。 当我们具有单独的测试配置以在不同情况下运行时。 例如在开发人员PC或CI中进行测试或用于测试报告或进行不同类型的测试等。 缺点 1.错误消息不是用户友好的。 因此调试并不容易。 您需要了解简单的测试架构才能理解错误。 2.并行执行可能导致与错误相关的资源被锁定或繁忙。 3. Excel或CSV中的空白字符可能会导致错误。 因此在创建数据文件时要小心。 4.存在一些已知的错误。 流行的错误之一是仅通过excel数据加载器生成的测试失败报告。 其他数据加载器无法生成失败测试报告仅生成通过测试报告。 希望本文有助于使用Easy test。 我的Github示例https://github.com/sarkershantonu/Automation-Getting-Started/tree/master/junit-easytest Todo自定义数据类型转换器示例。 我将逐渐添加。 翻译自: https://www.javacodegeeks.com/2016/12/data-driven-testing-junit-easytest.htmljunit数据驱动测试

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

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

相关文章

政务公开系统网站建设四川电子有限公司 - 手机网站

CSDN编程题-每日一练(2023-08-21) 一、题目名称:贝博士的论文审阅统计二、题目名称:生命进化书三、题目名称:寻找宝藏山一、题目名称:贝博士的论文审阅统计 时间限制:1000ms内存限制:256M 题目描述: 贝博士经常收到申请他审阅论文的信函,每封信函的信封上面只有两个申…

seo 网站结构优化企业培训网

文章目录 一、需求背景二、核心功能1、功能要求2、非工能要求 三、存储方式四、实现方式五、技术栈说明 一、需求背景 二、核心功能 1、功能要求 文件上传文件预览文件分片上传文件分片合并文件秒传文件断点续传文件下载 2、非工能要求 高扩展性:方便添加新的存…

一个网站如何做外链做网站需要注册商标吗

转自: 运维监控系统-监控项及指标的梳理_程序员杂谈-CSDN博客_运维监控指标综合监控功能工具 综合监控工具完成对被管对象的集中监控、集中维护和集中管理,被管对象包括网络设备、服务器、PC设备、数据库、中间件、存储、备份、安全设备、应用系统等。工…

自适应网站的代表郑州seo排名哪有

分布式跟踪 本模块提供了端侧业务流程调用链跟踪的打点能力,包括业务流程跟踪的启动、结束、信息埋点等能力。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import hi…

杭州设计 公司 网站自动采集的网站

针对微信转发分享链接过程中,您宝贵的域名被微信检测系统过滤拦截而无法正常浏览,例如该网页包含诱导分享内容,被多人投诉等,又例如提示该网页已停止访问等提示。怎么查询域名在微信中是否被封了呢?以上接口可检测到域名的四种异…

自己的电脑建网站软件开发模型v模型

采用技术 基于SpringBoot框架实现的web的智慧社区系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 简介 本系统实现了管理员,教师,学生三个模…

关于做书的网站seo哪家好

这是一个半技术向的博客,主题来源于我读过的某本书的片段,这是一个稍稍有些前置知识的故事,主题的大概内容就是假定世界存在某个规则序列,通过一代代的探索,可以获取到此序列的内容。本文将模拟此情形,写一…

组装电脑报价网站源码淄博网站制作建设优化

负载均衡——这是一个在网络世界中非常重要的概念。 一, 负载均衡的原理 想象一下,你在学校的食堂里,只有一个厨师在忙碌地为所有饥饿的学生准备午餐。如果每个人都排队等同一个厨师,那么等待时间会很长,而且厨师可能…

网站开发的主要技术难点和重点岳阳建网站

一. 事件监听 在大前端的开发中,必然存在各种各样和用户交互的情况:比如手指点击、手指滑动、双击、长按等等。所有内容首发于公众号:coderwhy在Flutter中,手势有两个不同的层次:第一层:原始指针事件&#…

网站首页被k咋办siren模板wordpress

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:单调栈 试题二:滑动窗口 试题三:子矩阵 试题四:最大子序和 试题一:单调栈 【题目描述】 给定一个长度为 N 的整数数列,输出每…

成都网站优化维护wordpress 页面名称

决定给自己见一个技术博客之后,在网上搜了一下,发现了51CTO网站,进入之后发现网速够快,有尝试了博客的功能,也基本满足了我的要求,那就是它了,于是我就在51CTO安家了。写了两片共近千字的文章之…

建立网站专业公司吗wordpress架设进出销

谈及浏览器中的网络,就避不开HTTP。我们知道HTTP是浏览器中最重要且使用最多的协议,是浏览器和服务器之间的通信语言,也是互联网的基石。而随着浏览器的发展,HTTP为了能适应新的形式也在持续进化,我认为学习HTTP的最佳…

石桥铺网站建设电商软件开发平台

很多人像在文章或者聊天使用表情,但是不知道如何输入,下面孙叫兽就来带你体验一下吧 快捷键 win. 比如在微信聊天框使用win. 就可以输入表情符号,颜文字及符号。 你们学废了?

青岛专业网站设计的公司google关键词工具

UML用例图是什么? UML用例图(Unified Modeling Language Use Case Diagram)是一种用于描述系统功能和用户之间交互的图形化建模工具。它是UML的一部分,主要用于识别和表示系统中的各个用例(用户需求或功能点&#…

邯郸大网站沈阳男科医院排名最好的医院

一、定义的不同RegExp.prototype.test()RegExp.prototype.exec()String.prototype.match()从MDN的定义可以看出,test和exec是正则实例的API,match是String的,这一点决定了调用方式的不同。二、应用场景的不同如果只是想要判断正则表达式和字符…

网站建设维护视频教程国家工程招标网公告

创造模式物品栏 添加到当前已有物品栏 再添加自定义的创造模式物品栏之前,请确保你的确有这个需求!否则建议直接添加到当前已有的物品栏内部 创建新文件:com/example/item/ModItemGroup.java package com.example.item;import net.fabricmc.…

洛阳建设网站的公司和目网站

Azure Machine Learning借助对计算机视觉任务的支持,可以控制模型算法和扫描超参数。 这些模型算法和超参数将作为参数空间传入以进行扫描。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济…

photoshop官网谁可以做网站优化排名推广

目录 前言 一、HTML中的排版标签 1. 文本相关标签 1.1 标题标签 ~ 1.2 段落标签 1.3 强调和加粗 1.4 换行标签 1.5 水平线标签 二、HTML中的语义化标签 2.1 语义化标签概述 2.2 常见的语义化标签 示例(核心代码部分): 三、HTM…

dedecms招聘网站北京公司网站制作价格

01 牧原股份 招聘岗位:网络工程师 职责描述: 1、负责公司及下属子公司办公网络及IOT网络架构规划、设计、重大网络变更评审或实施及重大疑难问题处理; 2、负责公司网络运维监控体系、自动化网络运维及服务体系,并持续优化改进&am…

济南网站制作经验wordpress建外贸网站

Spring中的Profile批注可以用于任何自动检测候选的Spring组件(例如, Service Component, Service Component , Service Configuration等)。 Profile批注接受单个配置文件或一组必须是活动的配置文件,以使带…